Sql Datatable列和行的顺序错误

Sql Datatable列和行的顺序错误,sql,vb.net,epplus,Sql,Vb.net,Epplus,我正在尝试使用EPPLUS将电子表格中的一些信息放入一个数据表中,该数据表随后将导出到sql server。 我遇到的问题是,当我创建datatable列,然后开始插入行时,最终结果显示行信息和列标题之间不对齐。 代码如下: Sub ConvertPackage2DT() Dim FILENAME As String = "C:\Data.xlsx" Dim flInfo As New FileInfo(FILENAME) _pack

我正在尝试使用EPPLUS将电子表格中的一些信息放入一个数据表中,该数据表随后将导出到sql server。
我遇到的问题是,当我创建datatable列,然后开始插入行时,最终结果显示行信息和列标题之间不对齐。 代码如下:

    Sub ConvertPackage2DT()

        Dim FILENAME As String = "C:\Data.xlsx"

        Dim flInfo As New FileInfo(FILENAME)

        _package = New ExcelPackage(flInfo) 'load the excel file

        Dim strSheetName As String = "Radiology"

        Dim Conn As SqlConnection = New SqlConnection("Data Source=dwsqlserver1\instance3;Initial Catalog=LocalDatasets_Dev;Integrated Security=True") 'connection to server end
        Dim DTExport As New DataTable


        If Not IsNothing(_package) Then

            Dim _workbook As ExcelWorkbook = _package.Workbook
            Dim _sheets As ExcelWorksheets = _workbook.Worksheets
            Dim sh As ExcelWorksheet = _sheets.Item(strSheetName)


            If _package.Workbook.Worksheets.Count <> 0 Then

                For Each _sheet In _sheets
                    Dim SHEET_NAME As String = _sheet.Name
                    Dim tbl As New DataTable
                    Dim hasHeader = True ' adjust accordingly '



                    For ColNum = 1 To sh.Dimension.End.Column
                        tbl.Columns.Add(sh.Cells(1, ColNum).Value)
                    Next
                    System.Diagnostics.Debug.Print(tbl.Columns.Count)

                For rowNum = 2 To sh.Dimension.End.Row

                    Dim v(sh.Dimension.End.Column - 1) As Object
                    For X = 0 To sh.Dimension.End.Column - 2
                        v(X) = sh.Cells(rowNum, X + 1).Value
                    Next
                    tbl.Rows.Add(v)

                    'tbl.Rows.Add(wsRow.Select(Function(cell) cell.Text).ToArray)
                Next



                Conn.Open()

                Using bulkcopy As SqlBulkCopy = New SqlBulkCopy(Conn)
                    bulkcopy.DestinationTableName = "[LocalDatasets_Dev].[dbo].[" & GetNewTableName(6) & "]"
                    bulkcopy.WriteToServer(tbl)
                End Using

                Conn.Close()
                MsgBox("Complete")
                Exit Sub
                Next _sheet
            End If
        End If
    End Sub


End Module
Sub-ConvertPackage2DT()
Dim文件名为String=“C:\Data.xlsx”
将flInfo设置为新文件信息(文件名)
_package=New ExcelPackage(flInfo)'加载excel文件
Dim strSheetName As String=“Radiology”
Dim Conn As SqlConnection=New SqlConnection(“数据源=dwsqlserver1\instance3;初始目录=LocalDatasets\u-Dev;集成安全性=True”)“与服务器端的连接
Dim DTE导出为新数据表
如果不是空(_包),则
Dim\u工作簿作为Excel工作簿=\u package.工作簿
将工作表调整为Excel工作表=\u工作簿.工作表
将sh设置为Excel工作表=_sheets.Item(strSheetName)
如果_package.Workbook.Worksheets.Count为0,则
对于每一张中的每一张
尺寸表\u名称为字符串=\u SHEET.NAME
Dim tbl作为新数据表
Dim hasHeader=True“相应调整”
对于ColNum=1到sh.Dimension.End.Column
tbl.Columns.Add(sh.Cells(1,ColNum.Value)
下一个
System.Diagnostics.Debug.Print(tbl.Columns.Count)
对于rowNum=2到sh.Dimension.End.Row
尺寸v(sh.Dimension.End.Column-1)作为对象
对于X=0到sh.Dimension.End.Column-2
v(X)=sh.Cells(rowNum,X+1).值
下一个
tbl.行。添加(v)
'tbl.Rows.Add(wsRow.Select(函数(单元格)cell.Text.ToArray)
下一个
康涅狄格州公开赛
将bulkcopy用作SqlBulkCopy=新的SqlBulkCopy(Conn)
bulkcopy.DestinationTableName=“[LocalDatasets_Dev].[dbo].[”&GetNewTableName(6)&]
bulkcopy.WriteToServer(tbl)
终端使用
康涅狄格州关闭
MsgBox(“完成”)
出口接头
下一页
如果结束
如果结束
端接头
端模块

有人能帮忙吗?非常感谢

您是否有多张图纸,并且所有图纸的布局是否相同?同样,如果您有多个工作表,它将在每次找到新工作表时添加新列,然后将数据添加到已存在的列中,即使这些列不相同。感谢您提供的有用提示,但如果您查看代码,它将在“下一个工作表”循环结束时退出,一旦它开始读取正确的一个。所以这一定是另一个问题。问题是,当我添加列时,为什么必须在之后以另一个顺序将它们混淆。我正试图找出一个办法,让列以与读入列相同的方式输出,就像行号现在感觉不太亮一样,但是“对于X=0到sh.Dimension.End.Column-2”这看起来是错误的-应该不是-1吗?嗨,Paddy,没有,这是有原因的,因为数组从0开始,不管怎样,我都能解决,没问题。只是想通过将列调整到正确的行来解决这个问题。这个网站上的代码编辑器是一个非常痛苦的东西-尝试过的每一件事都能正确显示缩进等:(