从Excel代码导入数据有什么问题? [英] What is the problem in Importing Data From Excel Code ?

查看:132
本文介绍了从Excel代码导入数据有什么问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

的返回错误消息:
DataTable已属于此DataSet.

在此行:

''s return error message :
DataTable already belongs to this DataSet.

At this line :

ds.Tables.Add(Tblsheet)





Dim SourceBookPath As String = Nothing
        Me.OpenFileDialog1.Filter = "Excel files (*.xls,*.xlsx)|*.xls;*.xlsx"
        Me.OpenFileDialog1.ShowDialog()
        If Not Me.OpenFileDialog1.FileName Is Nothing Then
            SourceBookPath = Me.OpenFileDialog1.FileName
        End If
        '---------------------------------------------------------------------------------
        Dim i As Integer
        Dim j As Integer
        Dim MsExcel1 = CreateObject("Excel.Application")
        Dim ExcelBook1 = MsExcel1.Workbooks.Open(SourceBookPath)
        Dim xlws = ExcelBook1.worksheets(1)

        Dim Tblsheet As New Data.DataTable
        Tblsheet.TableName = "Sheet1"
        Dim ds As New DataSet
        For c As Integer = 0 To 7
            Dim col As New Data.DataColumn
            col.ColumnName = xlws.Cells(14, c + 1).Value.ToString
            Tblsheet.Columns.Add(col)
            ds.Tables.Add(Tblsheet)
        Next

        '===========================================================

        Dim lastRow As Long = 0
        lastRow = MsExcel1.Range("A14").Find("*", MsExcel1.Range("A14"), XlFindLookIn.xlValues, , XlSearchOrder.xlByRows, XlSearchDirection.xlPrevious).row
        For i = 15 To lastRow
            Dim r As DataRow = ds.Tables("Sheet1").NewRow
            For j = 1 To 8 
                r(j - 1) = xlws.Cells(i, j).Value
            Next j
            ds.Tables("Sheet1").Rows.Add(r)
        Next i
        DataGridView1.DataSource = ds.Tables("Sheet1")
        '==========================================================
        Try
            TextBox1.Text = MsExcel1.Cells(6, 2).Value
            TextBox2.Text = MsExcel1.Cells(6, 4).Value
            DateTimePicker1.Text = MsExcel1.Cells(6, 6).Value
            TextBox4.Text = MsExcel1.Cells(6, 8).Value
            TextBox5.Text = MsExcel1.Cells(8, 2).Value
            DateTimePicker2.Text = MsExcel1.Cells(8, 4).Value
            TextBox7.Text = MsExcel1.Cells(8, 6).Value
            TextBox8.Text = MsExcel1.Cells(8, 8).Value
            DateTimePicker3.Text = MsExcel1.Cells(11, 2).Value
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        ExcelBook1.Close(False)
        MsExcel1.Quit()
        xlws = Nothing
        ExcelBook1 = Nothing
        MsExcel1 = Nothing

推荐答案

For c As Integer = 0 To 7
    Dim col As New Data.DataColumn
    col.ColumnName = xlws.Cells(14, c + 1).Value.ToString
    Tblsheet.Columns.Add(col)
    ds.Tables.Add(Tblsheet)
Next



看着这段代码,表Tblsheet被添加了多少次?



在用数据填充数据表之后,尝试将数据表添加到数据集中.



Looking at this piece of code, how many times does the table Tblsheet gets added?



Try adding the datatable to the dataset after you are finished filling the datatable with data.


先生,

将错误行移出循环即可..

Sir,

Move the error line out of the loop it will work..

For c As Integer = 0 To 7
            Dim col As New Data.DataColumn
            col.ColumnName = xlws.Cells(14, c + 1).Value.ToString
            Tblsheet.Columns.Add(col)
            ds.Tables.Add(Tblsheet)
Next



更改为



Change To

For c As Integer = 0 To 7
            Dim col As New Data.DataColumn
            col.ColumnName = xlws.Cells(14, c + 1).Value.ToString
            Tblsheet.Columns.Add(col)
        Next
            ds.Tables.Add(Tblsheet)


非常感谢,一切都在起作用
非常感谢...
Thank you very much, Every thing is working now
Thanks A lot...


这篇关于从Excel代码导入数据有什么问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆