[C#新手入門 九] C#讀取Excel表中的資料時,有的資料讀取不到
今天把程式釋出到伺服器IIS後,執行發現一個問題,有的excel匯入模板出現匯入資料丟失,某列第一行是空白沒有值,後面是數字型別的資料,匯入時整列值後變成空白了。
匯入的方式是在客戶機選擇Excel匯入模板,上傳到伺服器,在伺服器上執行讀取Excel,資料寫入資料庫。
解決方案百度搜的如下:
登錄檔修改內容如下:在HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Excel有一個TypeGuessRows值,預設是8, 將其改為0 就OK了。
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)如下:
String line; String [] split = null; DataTable table=new DataTable("auto"); DataRow row=null; StreamReader sr=new StreamReader("c:/auto.csv",System.Text.Encoding.Default); //建立與資料來源對應的資料列 line = sr.ReadLine(); split=line.Split(','); foreach(String colname in split){ table.Columns.Add(colname,System.Type.GetType("System.String")); } //將資料填入資料表 int j=0; while((line=sr.ReadLine())!=null){ j=0; row = table.NewRow(); split=line.Split(','); foreach(String colname in split){ row[j]=colname; j++;} table.Rows.Add(row);} sr.Close(); //顯示資料 dataGrid1.DataSource=table.DefaultView; dataGrid1.DataBind();
=======以下來自網路===============================================
http://www.cnblogs.com/jonhson/archive/2010/12/09/1901003.html
今天碰到這問題
無法讀取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,就可以解這個問題了。
相關推薦
[C#新手入門 九] C#讀取Excel表中的資料時,有的資料讀取不到
今天把程式釋出到伺服器IIS後,執行發現一個問題,有的excel匯入模板出現匯入資料丟失,某列第一行是空白沒有值,後面是數字型別的資料,匯入時整列值後變成空白了。 匯入的方式是在客戶機選擇Excel匯入模板,上傳到伺服器,在伺服器上執行讀取Excel,資料寫入資料庫。
C#.net讀取Excel表中的資料時,有些欄位內容(字串、數字)讀取不到的解決辦法
匯入Excel時,會丟失一些手機號,或者固定電話號 問題出在於,他們將資料填入Excel時,有些格式是數值型別,有些是文字型別 當用OLEDB讀取Excel的時候,在Extended Properties中若沒有配置IMEX=1的屬性,微軟的處理機制是將列轉換為同一
簡單的java讀取excel表中的資料程式碼
package com.wondersgroup; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.u
新手小白用C# winform 讀取Excel表
一、介面部分:首先,開啟visual studio新建專案;然後使用“工具箱”新增控制元件:分別新增button,datagridview,textbox三種窗體;所得到的介面圖如圖所示:(多加了幾個文字框)二、程式碼部分:1、新增名稱空間:using System.Data
新手入門學習c++你必須知道的發展前景和市場行情!
c++如今的市場不如從前,競爭很大,工資非常高,標準非常高,想要勝任一份高薪的工作不是那麼容易,只有掌握最新的行情才能更好的瞭解c++,百度內推文章,讓新手小白瞭解c++市場行情如下: 行情一:當下和五年前的區別,在五年我們這個行業不僅僅缺人才,連新手都缺,那個時候公司願意招聘實習生,培
C#——新手入門
我的第一個C#程式 廢話不說,程式碼如下: using System;//自動引用系統名稱空間 namespace Day01_Csharp//這是名稱空間 { class Program//這是一個類 { static void Main(stri
C#LeetCode刷題之#168-Excel表列名稱(Excel Sheet Column Title)
問題 給定一個正整數,返回它在 Excel 表中相對應的列名稱。 例如, 1 -> A 2 -> B 3 -> C ... 26 -&g
[C]第一章--初識C語言(1)--C新手入門
初識C語言 什麼是C語言? 第一個C語言程式 資料型別 變數和常量 變數 變數的分類 變數的作用域與生命週期 作用域 生命週期 常量 常量的分類
C#讀取Excel表格中資料並返回datatable
在軟體開發的過程中,經常用到從excel表格中讀取資料作為資料來源,以下整理了一個有效的讀取excel表格的方法。 DataTable GetDataTable(string tableName,string leftTopCel,string rightbutCel)
C#讀取excel資料時,文字格式和數值格式的內容無法正常全部讀取
表現:excel中某列中,有的單元格左上角有綠色箭頭標誌,有的沒有,c#編寫讀取程式,但是隻能讀取出帶綠色箭頭的單元格中的內容,其餘不帶的讀取不到內容 原因:excel中單元格因為是文字格式而儲存了數值,導致後臺錯誤檢查,在左上角顯示綠色箭頭 解決:string strConn; 原來讀取不完全的寫法:st
C# 使用NPOI讀取Excel表格中第一個sheet中內容存在DataTable中
很久沒寫文章了,主要是從java轉到c#,經歷坎坷一言難盡呀,但最重的一點,就是變懶了。希望你們不要學小編。。。咳咳。。好乾貨開始。 二、前端用form表單提交即可,js或jq觸發form提交即可 <form class="form-hori
C#中導出數據到Excel表格中
manage app 獲取 讀取 pen shee 格式 之前 pattern 之前PM交給我一個自動化測試的Case,讓我抓取頁面上的數據到Excel表格中,剛好又接了一個之前人家做的系統, 剛好看到可以用NPOI導數據,就動手試試,成功導出。 由於鄙人比較菜
c++連結SQL server ,用SQL語句打印表中的記錄,增加表中的記錄,刪除表的欄位
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF") // 唯一的應用程式物件 CWinApp
C#:如何輸出資料到excel表格中
最近需要將工作中產生的一些資料發到excel表格內進行處理,因此記錄下解決問題的思路 一:如何建立一個excel檔案 使用FileStream類,程式碼如下 string fileDir = "e:\\VSWorkSpace\\TryForm\\TryForm\\bin\\Debug\\
NPOI 讀取Excel 表資料 資料裡面帶日期時的處理方法
將ExcelToDataTable 方法下的 //if (row.GetCell(j) != null) //同理,沒有資料的單元格都預設是null // dataRow[j] = row.GetCell(j).ToString(); 替換為 if (row.Ge
將Excel表中的資料 轉換成XML 並對XML資料進行讀取
EXCEL 轉換成 XML 工具類 using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.Xml; usi
python讀取txt資料,轉換到excel表中
接收後臺模擬資料,存放在txt檔案中,需要轉換到excel中 txt中的資料格式為: recv message - 82815: {"export1": 0, "export0": 0, "export3": 1, "export2": 0, "export5": 0,
C#元件系列——又一款Excel處理神器Spire.XLS,你值得擁有(二)
前言:上篇 C#元件系列——又一款Excel處理神器Spire.XLS,你值得擁有 介紹了下元件的兩個功能,說不上特色,但確實能解決我們專案中的一些實際問題,這兩天繼續研究了下這個元件,覺得有些功能用起來還是挺方便的,這篇繼續來看看Spire.XLS的一些其他功能,說不定有你需要的呢~~ 一、基礎入門
C#元件系列——又一款Excel處理神器Spire.XLS,你值得擁有
前言:最近專案裡面有一些對Excel操作的需求,博主想都沒想,NPOI唄,簡單、開源、免費,大家都喜歡!確實,對於一些簡單的Excel匯入、匯出、合併單元格等,它都沒啥太大的問題,但是這次的需求有兩點是NPOI搞不定的: 匯入Excel後,需要切割Excel的Sheet頁,然後每個Sheet頁單獨生成一
利用poi將excel表中資料讀取存入mysql資料庫(資料量比較大)
最近被老大安排了一個任務,利用程式將excle表中的資料讀取到,做處理,然後存進資料庫。接到任務的時候人是懵逼的。但是安排的任務也得硬著頭皮完成。現將做的東西記錄如下,方便以後查詢。 這個小demo的原型是在網上找的,demo連結如下 http://www.cnblogs.