与LinqToExcel导入数据(Importing data with LinqToExcel)

2019-10-18 06:28发布

我有我试图导入到一个电子表格XLSX IList(of FinancialResults)使用VB.NET集合。

电子表格是在下面的格式,其中我需要从适当的列的单元映射到一个类。

电子表格

模型

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我通过安装的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方法或单独加载每个单元?

是否有其他更好的选择?

Answer 1:

这是不可能的LinqToExcel看您,是因为它的布局的电子表格。

读它最简单的方法是改变布局,使第一行包含像下面所示图片中的列名



文章来源: Importing data with LinqToExcel