2015-03-03 2 views
0

У меня есть лист Excel xls, я использую LinqToExcel для его чтения, а затем импортирую его в свою БД.LinqToExcel возвращает null

Этот лист состоит из примерно 3K строк и всего 6 колос. Я использую .addmapping для сопоставления свойств класса с именами столбцов

Проблема, которая есть у меня, это: ячейки столбца «веб-код» - это ИТОГИ, возвращающиеся как нулевые, хотя в ячейках есть данные.

Вот пример данных, которые идут как 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

скопируйте код в текстовой форме, если возможно –

+0

Помимо отображения кода в текстовой форме вам также необходимо показать нам некоторые строки, которые возвращать результаты товара и некоторые строки, которые возвращаются плохо. Недостаточно сказать, что «ячейки столбца« веб-код »являются ИНОГДАМИ, возвращающимися как null». Вы должны показать нам. – Enigmativity

+0

Используйте поле типа возвращаемых объектов в коде, чтобы просмотреть его в изображениях excel. Сейчас я в поезде. – alsafoo

ответ

5

Альтернативное решение: я в конечном итоге сохранение листа первенствовать как CSV файл, а затем импортировать в SQL table.Then я использовал Linq-to SQL, чтобы прочитать данные

Root Причина:. После исследования я выяснил, проблема заключалась в том, что первая ячейка этого столбца (веб-код) был interger число, и превосходят TRYS, чтобы выяснить тип данных из столбец, посмотрев на первые строки!

Итак, следующие строки столбца (веб-кода) были некоторые тексты а. Поэтому excel не смог разобрать его как целое и присвоить ему значение null!

Что бы я мог сделать, так как значение текста передается первой ячейке, поэтому excel угадывает тип данных как строку. Но я не проверял это. Для тех, кто читает этот ответ, попробуйте иметь текстовое значение в первой строке, если вы столкнулись с одной и той же проблемой.

0

здесь, то Содержит не как строка содержит. Он сравнивает список значений ячеек с точным значением u, заданным внутри метода contains. просто попробовать с полным текстом «900 АММИАКА НАЛИЧИИ ИЛИ ПАМ ...)

+0

Я сделал, результатов не найдено. пробовал эту линию var priccerNP = prices.Where (p => p.Type.Equals («ARROW TAPE 900», StringComparison.OrdinalIgnoreCase)). ToList(); – alsafoo

+0

это работает нормально для меня здесь :) – Veena

+0

, то это данные связанные. но не уверен, что это такое. bcz Я знаю, что тот же код на тех же столбцах дает мне результаты назад – alsafoo

Смежные вопросы