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())
I had code which use to upload file excel into datatable and show at gridview.
After show at gridview, the excel value which has been convert into datatable and showed at gridview will be saved to database.
My problem :
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
that was code to get the row value.
But how to set datatable with new data row?
If I had null value in row 2, I wanted proses input data to datatable will stoped! And showing with new value from datarow value into gridView.
-------------------------------------- EDIT ----------------------------------
example :
upload file excel :
col1 ---- col2 ---- col3 ---- col4
tes1 ---- test1 ---- test1 ---- test1
tes2 ---- test2 ---- ---- test2
tes3 ---- test3 ---- test3 ---- test3
tes4 ---- test4 ---- ---- test4
and the result at gridview must like this :
col1 ---- col2 ---- col3 ---- col4
tes1 ---- test1 ---- test1 ---- test1
tes3 ---- test3 ---- test3 ---- test3
Try,
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