91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

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

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

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

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

1、當某列數據中含有混合類型時,在.NET中使用Microsoft.Jet.OLEDB.4.0來讀取Excel文件造成數據丟失是不可避免的,要解決這個問題只能考慮采用其它數據讀取方法。 
2、在.NET中讀取Excel文件的另外一種方法是回到使用傳統(tǒng)COM組件,但使用COM組件來讀取Excel文件數據的效率較低,在作釋放的時候有可能碰到不可預知的錯誤,特別開發(fā)Web應用的程序應該慎重使用 
3、一種有效的方法可以是,在讀取Excel的.xls類型的文本數據之前,先將其轉換為.csv格式,在Excel中直接另存為這種格式就可以達到轉換的目的。CSV文件又稱為逗號分隔的文件,是一種純文本文件,它以“,”分隔數據列 
4、對csv文件不要采用ole db或odbc方法讀取,這樣還會出現同樣問題。要采用普通的讀取文本文件的方法打開文件,讀取第一行,用“,”作為分隔符獲得各字段名,在DataTable中創(chuàng)建對應的各字段,字段的類型可以統(tǒng)一創(chuàng)建成“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:    //創(chuàng)建與數據源對應的數據列 
   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了。但在實際使用過程中,這樣設置還是不行,查閱了不少資料才發(fā)現,原來還有一個注冊表里的信息需要修改,這樣帶能讓excel不再使用前8行的內容來確定該列的類型。
注冊表修改內容如下:
在HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Excel有一個TypeGuessRows值,預設是8,表示會先讀取前8列來決定每一個欄位的型態(tài),所以如果前8列的資料都是數字,到了第9列以后出現的文字資料都會變成null,所以如果要解決這個問題,只要把TypeGuessRows機碼值改成0,就可以解這個問題了。

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

主站蜘蛛池模板: www.99re8| 国产高清亚| 国产喷潮在线播放一 | 国产精品一二在线 | 韩欧美一区二区 | 日本欧美亚洲素人 | 91视频app污| 91啦国产 | 欧美一级在线观 | 91精选资源在 | 欧美在线| 欧美在线日韩精品 | 午夜福利精品 | 欧美亚洲日本 | 九九热免费在线观看 | 国产超级 | 国产精品婷婷午夜 | 精品日韩欧美一区 | 日本三级欧美三级 | 日产美产国产一区 | 91精品国产免| 18欧美乱大| 日韩欧美一区精品 | 加勒比中文 | 国产在线小视频 | 国产精品成人午 | 91国内揄拍 | 国产亚洲人成a | 无码动漫无圣光肉番 | 国产精品日本 | 国产国产乱老熟女视 | 日韩中文高清一 | 九七精品人 | 喷在线播放 | 国产在线视频琪琪 | 欧美亚洲日韩激情 | 日韩字幕欧美 | 国产在线91 | 日韩在线观看一区二 | 欧美亚洲自拍偷拍 | 欧美日韩国产欧美 |