2016-06-28 51 views
0

我使用LINQ語句通過MVC網站導入excel表格如下Excel導入:沒有被讀取的數據,如果列具有使用LINQ

var members = (from memRec in excelFile.Worksheet(sheetName) 
       where memRec["FIRST_NAME"] != null 
       select memRec).ToList(); 
foreach (var member in members) 
{ 
//save data 
} 

這裏的問題是讓MVC C#不同的數據格式說前兩列的特定列「出生日期」的單元格格式爲"DATE" and display as dd/MM/yyyy,第三列的單元格格式爲"Text" and display as dd/MM/yyyy由於格式不匹配,excel會將其視爲沒有值的第三列。

有什麼辦法可以解決這個問題。

回答

0

嘗試聲明對象,並使用預定義的數據類型,如:

var q = from memRec in excelFile.Worksheet(sheetName) 
     where memRec["FIRST_NAME"] != null 
     select new Person() 
     { 
      Date = (DateTime)memRec [「Date」], 
      FirstName= (string)memRec [「FirstName」], 
      Age= (int)memRec [「Age」], 
     }; 
+0

將它導入從紙張到q的所有行? – Sachu

+0

爲什麼不呢?我應該像普通的LINQ一樣工作... –

0

我發現了一個解決方案。

在我們的服務器是Office 2010中

更改註冊表項,如下

  1. 在Windows環境下,選擇開始►運行,鍵入REGEDIT顯示 註冊表編輯器。
  2. 在註冊表樹中,選擇HKEY_LOCAL_MACHINE►Software►Microsoft► Office►12.0►Access Connectivity Engine►引擎。
  3. 雙擊Excel節點。
  4. 在右側窗格中,雙擊TypeGuessRows條目。
  5. 將數值數據從8更改爲0.
  6. 單擊確定。
  7. 選擇文件►退出以退出註冊表編輯器窗口。

現在的Excel不會猜測該行的數據類型,因爲我們改變從8值爲0

相關問題