特定の範囲の特定の値を読み取ってデータテーブルに抽出する必要があるExcelファイルがあるので、そのデータをデータベースのテーブルに保存できます。
デバッグ中、すべてのループでデータテーブルビジュアライザーをチェックして何が起こっているかを確認すると、同じ行に別の行の値を追加していることがわかります。写真の例。
これがそのアクションを担当するコードです(Try-Catchに囲まれています)
Using excel As New ExcelPackage (ulTarget.PostedFile.InputStream)
Dim _worksheet = excel.Workbook.Worksheets.First()
Dim _hasHeader = True
For Each cell In _worksheet.Cells(1,2,147,4)
_dataTable.Columns.Add(If(_hasHeader, cell.Value, String.Format("{0}", cell.Start.Column)))
If _worksheet.Cells.Value Is Nothing Then
Continue For
Next
データテーブルに入力されるデータが正しいため、範囲1,2,147,4が正しいと仮定すると、行の分離が問題になります。_dataTableは私のDataTableであり(私は知っていますが、それを明確にするのに悪いことは何もありません)、アップロードされるExcelワークシートにヘッダーがあり、データがすべてデータテーブルに入れられることを望まないため、_hasHeaderはTrueに設定されています適切な列名が存在するSQLServerのテーブル。
また、ulTargetは私のファイルアップローダーです。これにはEPPlusの最新バージョンを使用しています。
上の写真の例のように、データを行に分割する方法について誰か提案がありますか?必要に応じて、ご不明な点がございましたら、お気軽にお問い合わせください。
ヘッダーのない列の水平範囲を追加し、各セルを行ごとに読み取ります。
Using excel As New ExcelPackage(ulTargetFile.PostedFile.InputStream)
'Add the columns'
Dim _worksheet = excel.Workbook.Worksheets.First()
Dim _hasHeader As Boolean = False
For Each col In _worksheet.Cells("B1:D1")
_dataTable.Columns.Add(If(_hasHeader, Nothing, col.Value))
String.Format("{0}", col.Start.Column)
Next
'Add the rows'
For rowNumber As Integer = 1 To 147
Dim worksheetRow = _worksheet.Cells(rowNumber, 2, rowNumber, 4)
Dim row As DataRow = _dataTable.Rows.Add()
For Each cell In worksheetRow
row(cell.Start.Column - 2) = cell.Value
Next
Next
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加