2016-03-27 3 views
-1

Я пытался проанализировать файл excel, используя библиотеку LinqToExcel. Мой файл Excel имеет следующий «дизайн»:LinqToExcel синтаксический анализ сводных данных

Property1 | Property2 | HasExtraProperty1 | HasExtraProperty2 | HasExtraProperty3 
------------|---------------|-----------------------|-----------------------|------------------- 
    foo  |  bar  |   yes   |   yes   |   no 
    barfoo |  foobar |   no   |   no   |   yes 
    barbar |  foofoo |   no   |   yes   |   no 

абстракция мою модель выглядит следующим образом:

class MyModel 
{ 
     List<ExtraProperties> extraProperties; 
     String property1; 
     String property2; 
} 

Я использовал отображение из библиотеки легко Сопоставьте (в этом пример) Строковые свойства для столбцов. Все это работает свободно, но теперь я застрял в анализе других свойств. В список должны быть добавлены только дополнительные свойства с «да». Любые идеи о том, как решить эту проблему с помощью запроса linq?

Примечание 1: Для обеспечения будущей достоверности количество дополнительных свойств должно меняться.

Примечание 2: Я рассмотрел использование другой библиотеки, но я уже использую LinqToExcel где-то в своем проекте, и я стараюсь, чтобы эти зависимости были минимальными.

ответ

0

Кажется, что самым простым решением было отказаться от удобного отображения, предоставляемого LinqToExcel, и просто прокручивать каждое имя столбца/строку.

IExcelQueryFactory fact = new ExcelQueryFactory(path); 
var query = from r in fact.Worksheet(0) 
      select r; 
IList<MyModel> models = new List<MyModel>(); 
foreach(var row in query){ 
    MyModel m = new MyModel(); 
    foreach(String colName in MyColMapping.Keys){ 
     p.GetType().GetProperty(colName).SetValue(p, row[ColMapping[colName]]); 
    } 
    foreach(ExtraProperty p in PMapping.Keys){ 
     if(row[PMapping[p]].Equals("yes")) 
      m.ExtraProperties.Add(p); 
    } 
    models.add(m); 
} 

Примечание: ColMapping - это словарь, который отображает имена excel-columns с свойствами модели. PMapping - это словарь, который отображает excel-столбцы с правильным объектом дополнительных свойств.

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