C#讀取excel資料時,文字格式和數值格式的內容無法正常全部讀取
阿新 • • 發佈:2019-02-02
表現:excel中某列中,有的單元格左上角有綠色箭頭標誌,有的沒有,c#編寫讀取程式,但是隻能讀取出帶綠色箭頭的單元格中的內容,其餘不帶的讀取不到內容
原因:excel中單元格因為是文字格式而儲存了數值,導致後臺錯誤檢查,在左上角顯示綠色箭頭
解決:string strConn;
原來讀取不完全的寫法:strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties=Excel 8.0;";
完全讀出的寫法:strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;
"Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
具體引數描述如下:
用OLEDB進行C#讀取Excel資料,並返回DataSet資料集。其中有幾點需要注意的:
C#讀取Excel資料1.連線字串中引數IMEX 的值:
- 0 is Export mode
- 1 is Import mode
- 2 is Linked mode (fullupdate capabilities)
IMEX有3個值:當IMEX=2 時,EXCEL文件中同時含有字元型和數字型時,比如第C列有3個值,2個為數值型 123,1個為字元型 ABC,當匯入時,頁面不報錯了,但庫裡只顯示數值型的123,而字元型的ABC則呈現為空值。當IMEX=1時,無上述情況發生,庫裡可正確呈現 123 和 ABC.
C#讀取Excel資料2.引數HDR的值:
HDR=Yes,這代表第一行是標題,不做為資料使用 ,如果用HDR=NO,則表示第一行不是標題,做為資料來使用。系統預設的是YES
C#讀取Excel資料3.引數Excel 8.0
對於Excel 97以上版本都用Excel 8.0Google AdSense 會在您的網站上提供與內容相關的廣告
- /**//// 〈 summary〉
- /// 讀取Excel檔案,將內容儲存在DataSet中
- /// 〈 /summary〉
- /// 〈 param name="opnFileName"〉
- 帶路徑的Excel檔名〈 /param〉
- /// 〈 returns〉 DataSet〈 /returns〉
- private DataSet ExcelToDataSet
- (string opnFileName)
- ...{
- string strConn = "Provider=Microsoft.
- Jet.OLEDB.4.0;Data Source=
- "+opnFileName+";
- Extended Properties=
- \"Excel 8.0;HDR=YES;IMEX=1\"";
- OleDbConnection conn =
- new OleDbConnection(strConn);
- string strExcel = "";
- OleDbDataAdapter myCommand = null;
- DataSet ds = new DataSet();
- strExcel = "select * from [sheet1$]";
- try
- ...{
- conn.Open();
- myCommand = new OleDbDataAdapter
- (strExcel, strConn);
- myCommand.Fill(ds,"dtSource");
- return ds;
- }
- catch (Exception ex)
- ...{
- MessageBox.Show("匯入出錯:"
- + ex, "錯誤資訊");
- return ds;
- }
- finally
- ...{
- conn.Close();
- conn.Dispose();
- }
- }