在用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結構復雜,如含合並單元等時,無法正確讀取,甚至出現不可預知的異常。