1. 程式人生 > >C#讀取excel資料時,文字格式和數值格式的內容無法正常全部讀取

C#讀取excel資料時,文字格式和數值格式的內容無法正常全部讀取

表現: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 的值:

  1. 0 is Export mode
  2. 1 is Import mode
  3. 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 會在您的網站上提供與內容相關的廣告

  1. /**//// 〈 summary〉
  2. /// 讀取Excel檔案,將內容儲存在DataSet中
  3. /// 〈 /summary〉
  4. /// 〈 param name="opnFileName"
  5. 帶路徑的Excel檔名〈 /param〉
  6. /// 〈 returns〉 DataSet〈 /returns
  7. private DataSet ExcelToDataSet
  8. (string opnFileName)
  9. ...{
  10. string strConn = "Provider=Microsoft.
  11. Jet.OLEDB.4.0;Data Source=
  12. "+opnFileName+";
  13. Extended Properties=
  14. \"Excel 8.0;HDR=YES;IMEX=1\"";
  15. OleDbConnection conn =
  16. new OleDbConnection(strConn);
  17. string strExcel = "";
  18. OleDbDataAdapter myCommand = null;
  19. DataSet ds = new DataSet();
  20. strExcel = "select * from [sheet1$]";
  21. try
  22. ...{
  23. conn.Open();
  24. myCommand = new OleDbDataAdapter
  25. (strExcel, strConn);
  26. myCommand.Fill(ds,"dtSource");
  27. return ds;
  28. }
  29. catch (Exception ex)
  30. ...{
  31. MessageBox.Show("匯入出錯:"
  32. + ex, "錯誤資訊");
  33. return ds;
  34. }
  35. finally
  36. ...{
  37. conn.Close();
  38. conn.Dispose();
  39. }
  40. }