在用c#操作excel的时候,碰到了一下的问题:
1.Microsoft.Ace.OleDb.12.0未安装,可以到下载2007 Office system 驱动程序AccessDatabaseEngine2007_CHS.zip:
数据连接组件安装
http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe
2.连接字符串的问题。采用Microsoft.Jet.OleDb.4.0,可以读取excel2007以前的版本,在客户机上不需要部署office,采用Microsoft.Ace.OleDb.12.0的时候,需要安装引擎。
@"Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelFile + @";Extended Properties='Excel 12.0; HDR=YES; IMEX=1'"; //此连接可以操作.xls与.xlsx文件。//备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。 "IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。
3.oledb连接打开的时候出现外部表不是预期的格式,这是因为读取的表格可能是带有html的格式,需要打开该表格,另存为标准的xls格式文档即可读取
采用oledb的时候读取和读写都比较的方便快速,尤其是可以不需要安装office组件,采用sql语句进行操作通用性强,将Excel中内容看作数据表,读取操作简单可靠,适合内容规范的Excel表格的数据读取但是缺点是当Excel结构复杂,如含合并单元等时,无法正确读取,甚至出现不可预知的异常。