我之前用過一個方法,不用裝Excel也能讀取Excel數據,分享下代碼:
在程序里用的是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里的表結構:
DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object {null, null, null, TABLE});
DataSet ds = new DataSet();
因為一個Excel文件可能有多個sheet,所以要循環讀取每個表:
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);
}
最后別忘了關掉連接:
conn.Close();
這樣就能把Excel里的數據全讀進DataSet里了,親測有效!而且服務器上不用裝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里的表結構:
DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object {null, null, null, TABLE});
DataSet ds = new DataSet();
因為一個Excel文件可能有多個sheet,所以要循環讀取每個表:
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);
}
最后別忘了關掉連接:
conn.Close();
這樣就能把Excel里的數據全讀進DataSet里了,親測有效!而且服務器上不用裝Excel也OK!