其實主要要做是將 Excel 內容讀入到 資料庫(SQL),可是因為 Excel 表格並不是統一的
所以再讀入 SQL 之前,必須要先處理過。
目前第一步 試著將 Excel 讀入到 C# 表單內,以供後續處理。
//讀取 C:\qq.xls 檔案內資料至 MessageBox
listBox1.Items.Clear();
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\qq.xls;Extended Properties=\"Excel 8.0;HDR=NO\"";
//HDR 是用來判斷 Excel 第一欄標題
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = sConnectionString;
cn.Open();
string sSQL = "SELECT * FROM [Sheet1$]";
OleDbCommand cmd = cn.CreateCommand();
cmd.CommandText = sSQL;
OleDbDataReader DR = cmd.ExecuteReader();
while (DR.Read())
{
listBox1.Items.Add(DR[0] + "," + DR[1] + "," + DR[2]);
}
cn.Close();
目前遇到的問題是,如果 Excel 內容裡面有包含 數字、文字 時(同一行)
那麼會沒有辦法讀出 數字。。 目前正在想辦法。。
下面這種寫法跟上面的一樣....只是換了不同敘述而已
也不能解決 文字和數字 並存。。。
//讀取 C:\qq.xls 檔案內資料至 MessageBox
string path = "c:\\QQ.xls";
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + path + ";Extended Properties='Excel 8.0;HDR=NO'";
OleDbConnection objConn = new OleDbConnection(strCon);
string strCom = " SELECT * FROM [Sheet1$] ";
objConn.Open();
OleDbDataAdapter objCmd = new OleDbDataAdapter(strCom, objConn);
DataSet objDS = new DataSet();
objCmd.Fill(objDS);
objConn.Close();
for (int i = 0; i < objDS.Tables[0].Rows.Count; i++)
{
//listBox1.Items.Add(objDS.Tables[0].Rows[i][1].ToString());
listBox1.Items.Add(objDS.Tables[0].Rows[i][0] + "," + objDS.Tables[0].Rows[i][1].ToString() + "," + objDS.Tables[0].Rows[i][2].ToString());
}
不好意思
回覆刪除我是個新手,有看到你上面這個說明可以拉excel的資料
中間有一段字說明現在文字跟數字並存的問題,請問這個已可解了嗎?
另外這上面的程式是要打在那呢?
我有在From.cs[設計]的畫面上把ListBox拉進去在點兩下,把上面第一個的程式copy進去,也把Source=c:\\qq.xls的路徑改為我自已的,FROM [Sheet1$]也有改過,不過在執行完,Listbox沒動作,後來又加了一個button進去,把程式改在button,執行後會出現一個問題指向這一個說有問題cn.Open();請問是什麼原因呢?另外我的軟體是Visual studio 2010跟excel 2010的。
我的msn:beardad0727@hotmail.com
如果可以的話麻煩教一下
謝謝哦
你好,小義:
回覆刪除cn.Open(); 連線無法開啟有可能是 Excel 的版本問題,由於我手上沒有安裝 2010 的文件版本,所以無法幫你測試。
請你參考這份文件,並下載試試看,這是已經寫好
讀取 Excel 的簡單範例。
http://kuomingwang.blogspot.com/2011/11/excel-c-oledb-excel.html