亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

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

C#讀取Excel表中的數(shù)據(jù)時(shí),為何有些行的字段內(nèi)容讀取不到

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

轉(zhuǎn)載:http://bbs.csdn.net/topics/360220285

1、當(dāng)某列數(shù)據(jù)中含有混合類型時(shí),在.NET中使用Microsoft.Jet.OLEDB.4.0來讀取Excel文件造成數(shù)據(jù)丟失是不可避免的,要解決這個(gè)問題只能考慮采用其它數(shù)據(jù)讀取方法。 
2、在.NET中讀取Excel文件的另外一種方法是回到使用傳統(tǒng)COM組件,但使用COM組件來讀取Excel文件數(shù)據(jù)的效率較低,在作釋放的時(shí)候有可能碰到不可預(yù)知的錯(cuò)誤,特別開發(fā)Web應(yīng)用的程序應(yīng)該慎重使用 
3、一種有效的方法可以是,在讀取Excel的.xls類型的文本數(shù)據(jù)之前,先將其轉(zhuǎn)換為.csv格式,在Excel中直接另存為這種格式就可以達(dá)到轉(zhuǎn)換的目的。CSV文件又稱為逗號(hào)分隔的文件,是一種純文本文件,它以“,”分隔數(shù)據(jù)列 
4、對(duì)csv文件不要采用ole db或odbc方法讀取,這樣還會(huì)出現(xiàn)同樣問題。要采用普通的讀取文本文件的方法打開文件,讀取第一行,用“,”作為分隔符獲得各字段名,在DataTable中創(chuàng)建對(duì)應(yī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)建與數(shù)據(jù)源對(duì)應(yīng)的數(shù)據(jù)列 
   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:    //將數(shù)據(jù)填入數(shù)據(jù)表 
  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:    //顯示數(shù)據(jù) 
  23:    dataGrid1.DataSource=table.DefaultView; 
  24:    dataGrid1.DataBind(); 

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

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