У меня есть таблица XLSX, которую я пытаюсь импортировать в коллекцию IList(of FinancialResults)
, используя VB.NET.Импорт данных с LinqToExcel
Электронная таблица находится в нижнем формате, где мне нужно отображать ячейки из соответствующих столбцов в класс.
Spreadsheet
Модель
Public Class FinancialResults
Friend Property MonthBudget As Single
Friend Property MonthActual As Single
Friend Property YearToDateBudget As Single
Friend Property YearToDateActual As Single
Friend Property FullYearForcastBudget As Single
Friend Property FullYearForcastActual As Single
Friend Property NextMonthBudget As Single
Friend Property NextMonthActual As Single
End Class
Код
Мой первоначальный вид был использовать LinqToExcel ВГ ich я установил через NuGet, но у меня возникают проблемы с загрузкой данных с помощью библиотеки. От чтения документации на веб-сайте я обнаружил, что эта функциональность может быть обеспечена с помощью метода AddMapping
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.MonthBudget, "D")
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.MonthActual, "E")
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.YearToDateBudget, "H")
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.YearToDateActual, "I")
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.FullYearForcastBudget, "L")
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.FullYearForcastActual, "M")
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.NextMonthBudget, "P")
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.NextMonthActual, "Q")
Затем загружаются данные, используя приведенную ниже Linq заявление.
Dim var = (From r In ExcelEngine.Worksheet(Of FinancialResults)(excelPageName)
Select r).ToList
Результаты
код компилируется и работает, но результаты не загружаются из таблицы. Все экземпляры класса FinacialResults заполняются 0,0
Выяснение, что отображение столбца может быть, по вине переспросила я коллекцию столбцов из ExcelQueryFactory
с помощью
Dim cols = ExcelEngine.GetColumnNames(excelPageName)
который вернул ниже.
Я изменил отображение столбцов, чтобы отразить их, но снова результаты возвращаются как 0.0 для всех экземпляров.
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.MonthBudget, "F4")
ExcelEngine.AddMapping(Of FinancialResults)(Function(m) m.MonthActual, "F5")
Вопрос
ли это возможно с помощью LinqToExcel учитывая формат этой таблицы? Если да, то что я делаю неправильно? Должен ли я использовать методы WorksheetRange или загружать каждую ячейку отдельно?
Есть ли другая предпочтительная альтернатива?
Вы говорите: «У меня есть таблицы XLSX, что я пытаюсь импортировать используя VB.NET. " Где вы пытаетесь импортировать электронную таблицу? Это может помочь мне помочь вам определить, может ли быть «предпочтительная альтернатива». – STLDeveloper
Изначально объект IList (Of FinacialResults). Затем он будет привязан к базе данных. Я посмотрел на использование пакета SSIS, но ограничился тем, что могу сделать на сервере. –