代码改变世界

Asp.net/c#+OleDb操作excel文件,基本操作 (一)

2009-10-27 11:09  诸葛二牛  阅读(3405)  评论(1编辑  收藏  举报
1、环境配置:加入using System.OleDb

2、编写连接与操作excel文件的通用函数

 

Code

也可以使用using语句书写:

 

Code

 

注:1)使用 Excel 工作簿时,默认情况下,区域中的第一行是标题行(或字段名称)。如果第一个区域不包含标题,您可以在连接字符串的扩展属性中指定 HDR=NO。如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(F1 表示第一个字段,F2 表示第二个字段,依此类推);2)IMEX=1将所有读入数据看作字符,其他值(0、2)请查阅相关帮助文档;3)如果出现“找不到可安装的isam”错误,一般是连接字符串错误 4)OleDB需要在32位的主机上,如果服务器是64位的,必须把程序设置为支持32位的系统。否则会出现以下的问题:

Excel读写的问题的
The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.


System.InvalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

解决方法是:在IIS的网站设置中,设置应用池中的网站的兼容32位系统。

3、从excel文件读取数据

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

DoOleSql(sql,
"test.xls");

4、更新excel文件中的数据

 

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

DoOleSql(sql,
"test.xls");

 

5、向excel文件插入数据

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

DoOleSql(sql,
"test.xls");

6、删除excel文件中的数据:不提倡使用这种方法

7、对于非标准结构的excel表格,可以指定excel中sheet的范围

1)读取数据:string sql = "select * from [sheet1$A3:F20]";

2)更新数据:string sql = "update [sheet1$A9:F15] set FieldName='333' where AnotherFieldName='b3'";

3)插入数据:string sql = "insert into [sheet1$A9:F15](FieldName1,FieldName2,…) values('a',’b’,…)";

4)删除数据:不提倡

注:1)代码根据需要可以自行修改;2)如果出现“操作必须使用一个可更新的查询”错误,可能sql语句中对excel文件中的“字段”引用有错误,或对excel文件不具有“修改”权限;3)如果出现“不能扩充选定范围”错误,可能是对excel文件引用的“范围”有错误。

后续有高级使用的部分。