数据库连接方式读取不到Excel数据值的解决方法
2012-02-17 16:40
676 查看
由于工作的需要,最近做了一个读取Excel文件数据的程序,采取ADO连接方式来读取Excel数据。
一、问题描述:
工作很顺利地便完成了,心底里有一点点高兴,对自己来讲,这种东西太小儿科化了(呵呵,有点自夸了,别当真^_^)。可是后面的过程中却遇到了较大的麻烦:凡是在Excel中打开的xls文件,如果单元格错误检查存在问题,那么其中的数据读取出来便是空(null)。具体体现在如果这个列为数值型,如果改为文本存储方式或其它方式,那么这些列的数据便读取不到。
二、问题分析:
经过多次测试发现问题都不能解决,除非修改列存储方式,但是这种工作量实在太大,根本没有可行性。冷静下来思考了一下,我估计是驱动程序的问题,便将连接方式如下,可是却出现“找不到可安装的ISAM错误”,实在是比较郁闷。
三、问题解决:
后来经过搜索与分析,将连接方式改成如下,问题解决了:
成功原因:
参数说明: Microsoft Jet 提供程序用于连接到 Excel 工作簿。在以下连接字符串中,Extended Properties 关键字设置 Excel 特定的属性。“HDR=Yes;”指示第一行中包含列名,而不是数据,“IMEX=1;”通知驱动程序始终将“互混”数据列作为文本读取。
注意http://msdn2.microsoft.com/zh-cn/library/ms254978.aspx 默认情况下,系统认为 Excel 数据源的第一行包含可用作字段名的列标题。如果不是这种情况,则必须将该设置关闭,否则,第一行数据将会“消失”,而被用作字段名称。这可通过向连接字符串的扩展属性添加可选的 HDR= 设置来完成。默认情况下(无需指定)是
HDR=Yes。如果没有列标题,则需要指定 HDR=No;提供程序将字段命名为 F1、F2 等等。因为扩展属性字符串现在包含了多个值,所以必须用引号单独包起来。
一、问题描述:
工作很顺利地便完成了,心底里有一点点高兴,对自己来讲,这种东西太小儿科化了(呵呵,有点自夸了,别当真^_^)。可是后面的过程中却遇到了较大的麻烦:凡是在Excel中打开的xls文件,如果单元格错误检查存在问题,那么其中的数据读取出来便是空(null)。具体体现在如果这个列为数值型,如果改为文本存储方式或其它方式,那么这些列的数据便读取不到。
二、问题分析:
经过多次测试发现问题都不能解决,除非修改列存储方式,但是这种工作量实在太大,根本没有可行性。冷静下来思考了一下,我估计是驱动程序的问题,便将连接方式如下,可是却出现“找不到可安装的ISAM错误”,实在是比较郁闷。
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + "Extended Properties='Excel 8.0; '";
三、问题解决:
后来经过搜索与分析,将连接方式改成如下,问题解决了:
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
成功原因:
参数说明: Microsoft Jet 提供程序用于连接到 Excel 工作簿。在以下连接字符串中,Extended Properties 关键字设置 Excel 特定的属性。“HDR=Yes;”指示第一行中包含列名,而不是数据,“IMEX=1;”通知驱动程序始终将“互混”数据列作为文本读取。
注意http://msdn2.microsoft.com/zh-cn/library/ms254978.aspx 默认情况下,系统认为 Excel 数据源的第一行包含可用作字段名的列标题。如果不是这种情况,则必须将该设置关闭,否则,第一行数据将会“消失”,而被用作字段名称。这可通过向连接字符串的扩展属性添加可选的 HDR= 设置来完成。默认情况下(无需指定)是
HDR=Yes。如果没有列标题,则需要指定 HDR=No;提供程序将字段命名为 F1、F2 等等。因为扩展属性字符串现在包含了多个值,所以必须用引号单独包起来。
相关文章推荐
- 数据库连接方式读取不到Excel数据值的解决方法
- [转]数据库连接方式读取不到Excel数据值的解决方法
- OLEDB方式读取Excel丢失数据的原因和解决方法(转)
- OLEDB方式读取Excel丢失数据的原因和解决方法
- OLEDB方式读取Excel丢失数据、字符串截断的原因和解决方法
- OLEDB方式读取Excel丢失数据的原因和解决方法
- C# 用数据库读取Excel出现“定义了过多字段”错误的解决方法 .
- 数据库中导出CSV文件与EXCEL文件数据对比可能遇到的问题与解决方法
- 解决PLSQL Developer无法连接64位ORACLE的方法(PLSQL 读不到ORACLE 的数据库)
- PHP-Excel读取导入Excel数据到数据库(2003,2007通用)使用方法
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- C# 用数据库读取Excel出现“定义了过多字段”错误的解决方法
- VC中连接mdb数据库及其数据读取方法
- 运用C#读取导入的Excel部分数据为空的解决方法
- C# 用数据库读取Excel出现“定义了过多字段”错误的解决方法
- 解决方法:ASP读取数据库中的中文数据出现乱码的问题
- excel内容导入数据库数据丢失问题的分析几解决方法
- 从Excel 电子表格中读取数据并插入到数据库的简单方式
- VC中连接mdb数据库及其数据读取方法
- 将EXCEL的数据读取出来写入数据库的实例方法