Excel 列值作为行而不是列附加到数据表中
Excel column values being appended as rows instead of columns into datatable
我有一个 Excel 文件,我需要通读并将某个范围内的特定值提取到数据中 table,这样我就可以将该数据保存到 table在数据库中。
调试时,我在每个循环中检查数据table 可视化工具以查看发生了什么,我发现我将不同行的值附加到同一行。照片中的示例。
SamplePhoto
这是负责该操作的代码。(用 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 是正确的,因为进入数据 table 的数据是正确的,行分隔只是问题所在。 _dataTable 是我的数据表(很明显我知道但澄清它没什么不好)并且 _hasHeader 设置为 True 因为正在上传的 Excel 工作表有 headers 我不希望将它们放入数据表因为数据将全部存储在 SQL 服务器中的 table 中,其中存在适当的列名。
ulTarget 也是我的文件上传器。为此,我正在使用 EPPlus 的最新版本。
有人对我如何按照上图中的示例将数据分成几行有任何建议吗?如果需要,很乐意做出任何澄清。
添加了没有headers的列的水平范围并逐行读取每个单元格。
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
我有一个 Excel 文件,我需要通读并将某个范围内的特定值提取到数据中 table,这样我就可以将该数据保存到 table在数据库中。
调试时,我在每个循环中检查数据table 可视化工具以查看发生了什么,我发现我将不同行的值附加到同一行。照片中的示例。
SamplePhoto
这是负责该操作的代码。(用 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 是正确的,因为进入数据 table 的数据是正确的,行分隔只是问题所在。 _dataTable 是我的数据表(很明显我知道但澄清它没什么不好)并且 _hasHeader 设置为 True 因为正在上传的 Excel 工作表有 headers 我不希望将它们放入数据表因为数据将全部存储在 SQL 服务器中的 table 中,其中存在适当的列名。
ulTarget 也是我的文件上传器。为此,我正在使用 EPPlus 的最新版本。
有人对我如何按照上图中的示例将数据分成几行有任何建议吗?如果需要,很乐意做出任何澄清。
添加了没有headers的列的水平范围并逐行读取每个单元格。
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