【问题标题】:Excel column values being appended as rows instead of columns into datatableExcel 列值作为行而不是列附加到数据表中
【发布时间】:2018-06-15 12:42:33
【问题描述】:

我有一个 Excel 文件,我需要通读该文件并将特定范围内的特定值提取到数据表中,然后我可以将该数据保存到数据库中的表中。

在调试时,在每个循环中,我都会检查数据表可视化工具以查看发生了什么,我发现我正在将不同行的值附加到同一行。照片中的示例。

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 是正确的,因为进入数据表的数据是正确的,那么行分隔就是问题所在。 _dataTable 是我的 DataTable(很明显,我知道,但澄清它并没有什么坏处)并且 _hasHeader 设置为 True 因为正在上传的 Excel 工作表有标题,我不希望它们被放入 DataTable 中,因为数据最终都会出现在一个SQL Server 中存在适当列名的表。

ulTarget 也是我的文件上传器。我正在为此使用 EPPlus 最新版本。

有人对我如何按照上面照片中的示例将数据分成行有任何建议吗?如果需要,很高兴做出任何澄清。

【问题讨论】:

  • 您还没有显示循环的开始或 cell 的初始化位置。请确保问题包含minimal reproducible example
  • 我道歉!谢谢。代码已更新。

标签: asp.net vb.net visual-studio-2010 epplus


【解决方案1】:

添加了没有标题的列的水平范围,并逐行读取每个单元格。

            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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-24
    • 2017-10-25
    • 1970-01-01
    • 2019-10-12
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多