前提
ExcelCreatorを利用して、該当のデータ型に応じてセル内のデータを取得しています。
(vb.net自体を最近始めたばかりなので方法を知らないだけかもしれません。)
該当のソースコード
ExcelLibModels
1Public Class [DataName] 2 Public Property 数字 As Integer? 3 Public Property 文字 As String 4 Public Property 日付 As Date? 5 Public Property 小数 As Decimal? 6End Class
main(該当処理部分のみ)
1 Dim model = New ExcelLibModels.DataName 2 model.数字 = XlsxCreator.Cell("H4").GetInteger 3 model.文字 = XlsxCreator.Cell("J4").Str 4 model.日付 = XlsxCreator.Cell("K4").GetDate 5 model.小数 = XlsxCreator.Cell("E7").GetDecimal 6 Return model
実現したいこと
- セル毎に該当の型を毎回処理しているのですが、処理部分を一つにまとめたい
(実際のデータは200項目程あるので見づらい)
main(該当処理部分のみ)
1 Dim model = New ExcelLibModels.DataName 2 Dim GetExcelData = Function(Cells As String) 3 'ここで該当の型を判定して、データに合った方法で取りたい 4 End Function 5 model.数字 = GetExcelData("H4") 6 model.文字 = GetExcelData("J4") 7 model.日付 = GetExcelData("K4") 8 model.小数 = GetExcelData("E7") 9 Return model
試したこと
下記のように書いていたのですが、model.~の文字が長いものもあって逆に見づらくなるので避けたい。
main(該当処理部分のみ)
1 Dim model = New ExcelLibModels.DataName 2 Dim GetExcelData = Function(DataType As Type, Cells As String) 3 'case TypeName = で判定、処理 4 End Function 5 model.数字 = GetExcelData(model.数字.GetType(),"H4") 6 model.文字 = GetExcelData(model.文字.GetType(),"J4") 7 model.日付 = GetExcelData(model.日付.GetType(),"K4") 8 model.小数 = GetExcelData(model.小数.GetType(),"E7") 9 Return model
下記の方法だとmodel内に取得した情報が入らなかった。
(一部どうやってやったのかうろ覚えです、すみません)
main(該当処理部分のみ)
1 Dim model = New ExcelLibModels.DataName 2 3 with model 4 'DataTypeを型宣言せずどうやってとっていたのか不明です 5 Dim inputExcelData = Sub(DataType, Cells As String) 6 'if分岐で型を取得 7 'DataType = XlsxCreator.Cell(Cells).Str 8 End Sub 9 inputExcelData(model.数字,"H4") 10 inputExcelData(model.文字,"J4") 11 inputExcelData(model.日付,"K4") 12 inputExcelData(model.小数,"E7") 13 End with 14 15 Return model
補足情報(FW/ツールのバージョンなど)
利用しているのは上記に書いてある4つの型のみです。
必要情報がない場合教えてください。
回答1件
あなたの回答
tips
プレビュー