我之前用過(guò)一個(gè)方法,不用裝Excel也能讀取Excel數(shù)據(jù),分享下代碼:
在程序里用的是ADO.NET,連接字符串是這樣的:
// 連接串
string strConn = Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source= + + ;;
然后建立連接:
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
接著獲取Excel里的表結(jié)構(gòu):
DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object {null, null, null, TABLE});
DataSet ds = new DataSet();
因?yàn)橐粋€(gè)Excel文件可能有多個(gè)sheet,所以要循環(huán)讀取每個(gè)表:
foreach( DataRow dr in dtSchema.Rows )
{
string table = dr.ToString();
string strExcel = SELECT * FROM ;
ds.Tables.Add(table);
OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel,conn);
myCommand.Fill(ds,table);
}
最后別忘了關(guān)掉連接:
conn.Close();
這樣就能把Excel里的數(shù)據(jù)全讀進(jìn)DataSet里了,親測(cè)有效!而且服務(wù)器上不用裝Excel也OK!
在程序里用的是ADO.NET,連接字符串是這樣的:
// 連接串
string strConn = Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source= + + ;;
然后建立連接:
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
接著獲取Excel里的表結(jié)構(gòu):
DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object {null, null, null, TABLE});
DataSet ds = new DataSet();
因?yàn)橐粋€(gè)Excel文件可能有多個(gè)sheet,所以要循環(huán)讀取每個(gè)表:
foreach( DataRow dr in dtSchema.Rows )
{
string table = dr.ToString();
string strExcel = SELECT * FROM ;
ds.Tables.Add(table);
OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel,conn);
myCommand.Fill(ds,table);
}
最后別忘了關(guān)掉連接:
conn.Close();
這樣就能把Excel里的數(shù)據(jù)全讀進(jìn)DataSet里了,親測(cè)有效!而且服務(wù)器上不用裝Excel也OK!