从datatable获取行值

时间:2012-01-18 04:03:14

标签: vb.net datatable datarow

  

Dim flag As Boolean = True

     

Dim fileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName)

     

Dim fileExtension As String = Path.GetExtension(FileUpload1.PostedFile.FileName)

     

Dim fileLocation As String = Server.MapPath(“〜/ Upload /”& fileName)

       'Check whether file extension is xls or xslx
        If fileExtension = ".xls" Then
            connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fileLocation & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2"""
        ElseIf fileExtension = ".xlsx" Then
            connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileLocation & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2"""
        End If

        'Create OleDB Connection and OleDb Command

        Dim con As New OleDbConnection(connectionString)
        Dim cmd As New OleDbCommand()
        cmd.CommandType = System.Data.CommandType.Text
        cmd.Connection = con
        Dim dAdapter As New OleDbDataAdapter(cmd)
        Dim dtExcelRecords As New DataTable()
        con.Open()
        Dim dtExcelSheetName As DataTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
        Dim getExcelSheetName As String = dtExcelSheetName.Rows(0)("Table_Name").ToString()
        cmd.CommandText = "SELECT * FROM [" & getExcelSheetName & "]"
        dAdapter.SelectCommand = cmd
        dAdapter.Fill(dtExcelRecords)
        con.Close()

        Dim row As DataRow
        For Each row In dtExcelRecords.Rows
            If Include.ConvertDbNullToEmpyString(row(2)) = "" Then
                MsgBox("Error in saving!")
                Exit For

            End If
            MsgBox(row(0) & " " & row(1) & " " & row(2) & " " & row(3))
        Next


        GridView1.DataSource = dtExcelRecords

        GridView1.DataBind()
        ViewState("file") = dtExcelRecords


        Dim dataSet As DataSet = New DataSet("dataSet")
        dataSet.Tables.Add(dtExcelRecords)
        '' Display the DataSet contents as XML.
        Console.WriteLine(dataSet.Tables(0).DataSet.GetXml())

我有用于将文件excel上传到datatable并在gridview上显示的代码。

在gridview上显示后,已转换为数据表并在gridview上显示的excel值将保存到数据库中。

我的问题:

Dim row As DataRow
        For Each row In dtExcelRecords.Rows
            If Include.ConvertDbNullToEmpyString(row(2)) = "" Then
                MsgBox("Error in saving!")
                Exit For
            End If
            MsgBox(row(0) & " " & row(1) & " " & row(2) & " " & row(3))
       Next

这是获取行值的代码。

但是如何用新数据行设置数据表?

如果我在第2行中有空值我希望proses输入数据到datatable将停止! 并从datarow值显示新值到gridView

感谢

--------------------------------------编辑-------- --------------------------

示例:

上传文件excel:

  

col1 ---- col2 ---- col3 ---- col4

     

tes1 ---- test1 ---- test1 ---- test1

     

tes2 ---- test2 ---- ---- test2

     

tes3 ---- test3 ---- test3 ---- test3

     tes4 ---- test4 ---- ---- test4

并且gridview的结果必须如下:

  

col1 ---- col2 ---- col3 ---- col4

     

tes1 ---- test1 ---- test1 ---- test1

     

tes3 ---- test3 ---- test3 ---- test3

2 个答案:

答案 0 :(得分:0)

如果您将Exit For更改为Exit Sub,那么您将在此时停止处理

答案 1 :(得分:0)

尝试,

                Dim dtData As DataTable
                dtData = New DataTable
                dtData.Columns.Add("Row0")
                dtData.Columns.Add("Row1")
                dtData.Columns.Add("Row2")
                dtData.Columns.Add("Row3")

                Dim row As DataRow
                For Each row In dtExcelRecords.Rows
                    If Include.ConvertDbNullToEmpyString(row(2)) = "" Then
                        MsgBox("Error in saving!")
                        Exit For 'or exit Sub
                    End If
                    Dim dr As DataRow = dtData.NewRow

                    dr("Row0") = row(0)
                    dr("Row1") = row(1)
                    dr("Row2") = row(2)
                    dr("Row3") = row(3)

                    dtData.Rows.Add(dr) 'Add this line

                Next

                'Bind dtData to gridview
                'Save data in dtData to database