2015-03-03 56 views
0

我XLS格式的Excel工作表中,我使用LinqToExcel讀它,然後將其導入到我的數據庫。LinqToExcel返回null

此片包括大約3K行和只有6 COLS的。我正在使用.addmapping將我的類屬性映射到列名

我遇到的問題是:「web代碼」列的單元格有時會返回爲空,儘管單元格中有數據。

下面是一個示例數據,即將作爲null! enter image description here

我的碼錶 enter image description here

,這裏是一個樣本數據中的數據來正確的地方: enter image description here

我的碼錶 enter image description here

我曾嘗試申請ExcelColumn屬性映射,但沒有運氣!

代碼:

 var factory = new ExcelQueryFactory(_excelFilePath); 
     factory.AddMapping<ExcelPriceEntity>(x => x.WebCode, "WEB-CODE"); 
     factory.AddMapping<ExcelPriceEntity>(x => x.Type, "TYPE"); 
     factory.AddMapping<ExcelPriceEntity>(x => x.Style, "STYLE"); 
     factory.AddMapping<ExcelPriceEntity>(x => x.Qty, "QTY"); 
     factory.AddMapping<ExcelPriceEntity>(x => x.UnitPrice, "Unit Price"); 
     factory.AddMapping<ExcelPriceEntity>(x => x.Bucket, "WEBCODE W/BUCKET"); 

     factory.StrictMapping = StrictMappingType.ClassStrict; 
     factory.TrimSpaces = TrimSpacesType.Both; 
     factory.ReadOnly = true; 
     var prices = factory.Worksheet<ExcelPriceEntity>(_allPricesSheetName).ToList(); 
     var priccerNP = prices.Where(p => p.Type.Contains("900 ARROW TAPE")).ToList(); 

我PriceEntity類:

public class ExcelPriceEntity 
{ 
    //[ExcelColumn("TYPE")] 
    public string Type { get; set; } 
    public string WebCode { get; set; } 
    //[ExcelColumn("STYLE")] 
    public string Style { get; set; } 
    //[ExcelColumn("QTY")] 
    public string Qty { get; set; } 
    //[ExcelColumn("Unit Price")] 
    public string UnitPrice { get; set; } 
    //[ExcelColumn("WEBCODE W/BUCKET")] 
    public string Bucket { get; set; } 
} 
+1

請複製代碼以文本形式如果可能的話 – 2015-03-03 02:47:23

+0

除顯示在文本形式的代碼,你還需要向我們展示了一些線是退貨結果和一些退貨不良的行。僅僅說「列的單元格」網絡代碼「有時候會返回爲空」是不夠的。你需要向我們展示。 – Enigmativity 2015-03-03 02:52:22

+0

使用代碼中返回對象的類型字段在Excel圖像中查找它。我現在在火車上。 – alsafoo 2015-03-03 03:07:05

回答

5

替代的解決方案: 我結束了保存Excel工作表以csv文件,然後導入到SQL table.Then我使用LINQ-TO- SQL讀取數據

根本原因: 研究,我發現,問題是,這列(網絡代碼)的第一個單元格是整數號碼後,和Excel改掉弄清楚的數據類型通過觀察第一排柱!

(網絡代碼)列因此,下排是一些文本DAT一個。所以excel無法將其解析爲整數,併爲其分配空值!

我會所做的是,assing文本值的第一個單元格,以便Excel中猜想的數據類型爲字符串。但我沒有測試。對於任何人閱讀這個答案,嘗試在你第一行有文本值,如果你遇到了同樣的問題

0

這裏,包含不像字符串包含。它將單元格值列表與contains方法中給出的確切值進行比較。只是嘗試與全文「900氨的股票或CUST ...)

+0

我做了,沒有結果。 試圖與此線 變種priccerNP = prices.Where(p值=>紙張類型。Equals(「900 ARROW TAPE」,StringComparison.OrdinalIgnoreCase))。ToList(); – alsafoo 2015-03-03 05:38:05

+0

這適用於我這裏:) – Veena 2015-03-03 06:10:44

+0

然後它是數據相關。但不知道它是什麼。 bcz我知道同一列上的相同代碼給我返回結果 – alsafoo 2015-03-03 06:17:09