IList(of FinancialResults)
VB.NET を使用してコレクションにインポートしようとしている XLSX スプレッドシートがあります。
スプレッドシートは以下の形式で、セルを適切な列からクラスにマップする必要があります。
スプレッドシート
モデル
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を使用することでしたが、ライブラリを使用してデータをロードする際に問題が発生しました。Web サイトのドキュメントを読んだところ、この機能は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メソッドを使用するか、各セルを個別にロードする必要がありますか?
別の好ましい代替手段はありますか?