一、安装Excel2007 或者 下载2007的插件 http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe
二、导入代码
01 | protected DataTable ExcelHelper( string filePaht) |
02 | { |
03 | string sFilePath2003 = Server.MapPath( "ExcelData/2003.xls" ); |
04 | //string sFilePath2007 = Server.MapPath("ExcelData/2007.xlsx"); |
05 | |
06 | // 支持Excel2003 和 Excel2007 的连接字符串 |
07 | // "HDR=yes;"是说第一行是列名而不是数据,"HDR=No;"正好与前面的相反。 |
08 | // 如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。 |
09 | string sConn = "provider=Microsoft.ACE.OleDb.12.0; Data Source ='" + sFilePath2003 + "';Extended Properties='Excel 12.0;HDR=yes;IMEX=1';" ; |
10 | if ( string .IsNullOrEmpty(sConn)) { return null ; } |
11 | |
12 | DataTable dtExcel = new DataTable(); |
13 | using (OleDbConnection conn = new OleDbConnection(sConn)) |
14 | { |
15 | conn.Open(); |
16 | // 获取Excel的第一个SheetName |
17 | string sSheetName = "" ; |
18 | DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object [] { null , null , null , "Table" }); |
19 | if (dtSheet.Rows.Count > 0) |
20 | sSheetName = dtSheet.Rows[0][ "Table_Name" ].ToString(); |
21 | else |
22 | return null ; |
23 | // 获取Excel数据 |
24 | string sSql = string .Format( "select * from [{0}]" , sSheetName); |
25 | OleDbDataAdapter adapter = new OleDbDataAdapter(sSql, conn); |
26 | adapter.Fill(dtExcel); |
27 | conn.Close(); |
28 | } |
29 | |
30 | return dtExcel; |
31 | } |