狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#讀取Excel表中的數據時,為何有些行的字段內容讀取不到

admin
2018年2月9日 0:50 本文熱度 7659

轉載:http://bbs.csdn.net/topics/360220285

1、當某列數據中含有混合類型時,在.NET中使用Microsoft.Jet.OLEDB.4.0來讀取Excel文件造成數據丟失是不可避免的,要解決這個問題只能考慮采用其它數據讀取方法。 
2、在.NET中讀取Excel文件的另外一種方法是回到使用傳統COM組件,但使用COM組件來讀取Excel文件數據的效率較低,在作釋放的時候有可能碰到不可預知的錯誤,特別開發Web應用的程序應該慎重使用 
3、一種有效的方法可以是,在讀取Excel的.xls類型的文本數據之前,先將其轉換為.csv格式,在Excel中直接另存為這種格式就可以達到轉換的目的。CSV文件又稱為逗號分隔的文件,是一種純文本文件,它以“,”分隔數據列 
4、對csv文件不要采用ole db或odbc方法讀取,這樣還會出現同樣問題。要采用普通的讀取文本文件的方法打開文件,讀取第一行,用“,”作為分隔符獲得各字段名,在DataTable中創建對應的各字段,字段的類型可以統一創建成“string”。 
參考代碼(demo)如下:
   
   1:  String line; 
   2:    String [] split = null; 
   3:    DataTable table=new DataTable("auto"); 
   4:    DataRow row=null; 
   5:    StreamReader sr=new StreamReader("c:/auto.csv",System.Text.Encoding.Default); 
   6:    //創建與數據源對應的數據列 
   7:    line = sr.ReadLine(); 
   8:    split=line.Split('',''); 
   9:    foreach(String colname in split){ 
  10:    table.Columns.Add(colname,System.Type.GetType("System.String")); } 
  11:    //將數據填入數據表 
  12:    int j=0; 
  13:    while((line=sr.ReadLine())!=null){ 
  14:     j=0; 
  15:     row = table.NewRow(); 
  16:     split=line.Split('',''); 
  17:     foreach(String colname in split){ 
  18:     row[j]=colname; 
  19:     j++;} 
  20:     table.Rows.Add(row);} 
  21:     sr.Close(); 
  22:    //顯示數據 
  23:    dataGrid1.DataSource=table.DefaultView; 
  24:    dataGrid1.DataBind(); 

無法讀取EXCEL中的數據單元格。有數據,但是讀出來全是空值。
解決方法:
1.在導入數據連接字符串中,將IMEX=1加入,“Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Data.xls";Extended Properties="Excel 8.0;HDR=Yes;IMEX=1; ”,這樣就可以。
注:
“HDR=Yes;”指示第一行中包含列名,而不是數據;
“IMEX=1;”通知驅動程序始終將“互混”數據列作為文本讀取。兩者必須一起使用。本以為這樣就OK了。但在實際使用過程中,這樣設置還是不行,查閱了不少資料才發現,原來還有一個注冊表里的信息需要修改,這樣帶能讓excel不再使用前8行的內容來確定該列的類型。
注冊表修改內容如下:
在HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Excel有一個TypeGuessRows值,預設是8,表示會先讀取前8列來決定每一個欄位的型態,所以如果前8列的資料都是數字,到了第9列以后出現的文字資料都會變成null,所以如果要解決這個問題,只要把TypeGuessRows機碼值改成0,就可以解這個問題了。

該文章在 2018/2/9 0:50:30 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved