使用OLEDB操作EXCEL

来源:互联网 发布:淘宝页头背景图尺寸 编辑:程序博客网 时间:2024/05/16 11:37
 

此文档主要说明如何使用OLEDB操作EXCEL。主文档面向开发人员。

概述

使用OLEDB操作EXCEL比直接操作操作EXCEL的性能要好,并且程序可读性高。使用OLEDB操作EXCELEXCEL就像一个数据库,而EXCEL的每一个表格就像数据库里的一个表。

 

规则

使用OLEDB操作EXCEL时有些与一般数据库的操作不同。如:

1.        表名,如果操作表格Sheet1则应该写成[Sheet1$]

2.        不提倡使用OLEDB删除EXCEL的数据。

 

配置连接串

    如下配置连接串,需要注意的是:Extended Properties的值随EXCEL版本的不同而不同,下面的值为EXCEL2003“HDR=Yes;”指示第一行包含列名称,但不包含数据,如果EXCEL的第一行不作为列的名称就设置为No,此时列自动生成;“IMEX=1;”指示驱动程序始终将“intermixed”数据列作为文本进行读取。

OleDbConnection conn = new OleDbConnection();

        conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Excel的文件路径 + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";

 

查询数据

l        读取整个表的数据

string sql = "select * from [sheet1$]"

l        对于非标准结构的excel表格,可以指定excelsheet的范围

string sql = "select * from [sheet1$A3:F20]";

更新数据

l        对于规范的表

string sql = "update [sheet1$] set FieldName1='333' where FieldName2='b3'";

l        对于不规范的表

string sql = "update [sheet1$A9:F15] set FieldName='333' where AnotherFieldName='b3'";

插入数据

l        对于规范的表

string sql = "insert into [sheet1$](FieldName1,FieldName2,) values('a',b,)";

l        对于不规范的表

string sql = "insert into [sheet1$A9:F15](FieldName1,FieldName2,) values('a',b,)";

 

常见错误

如果出现“操作必须使用一个可更新的查询”错误,可能sql语句中对excel文件中的“字段”引用有错误,或对excel文件不具有“修改”权限;

如果出现“不能扩充选定范围”错误,可能是对excel文件引用的“范围”有错误。