我有一个 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
代码
我最初的看法是使用通过 NuGet 安装的LinqToExcel,但我在使用库加载数据时遇到问题。通过阅读网站上的文档,我发现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方法还是单独加载每个单元格?
还有其他更好的选择吗?