导入CSV位置,而不是顶部行

我有一个客户端,我直接从CSV导入数据,但是他们的一些Excel工作表以公司标志和通用文本开头。 这些文件也发送给他们的第三方,所以我们要保持原样。

我已经能够匹配行标题,并将CSV导入到名字在第一行的Excel,我怎么能看“行3”?

我已经删除了大多数error handling的发布代码,因为它很长!

Protected Sub btnExcelToSQL_Click(sender As Object, e As System.EventArgs) Handles btnExcelToSQL.Click lblText.ForeColor = System.Drawing.Color.Green lblText.Text = " " '############# //'Check valid file type for photo If FileUpload1.HasFile Then Dim extension As String = Path.GetExtension(FileUpload1.PostedFile.FileName) If extension.ToLower() = ".xlsx" Or extension.ToLower() = ".xls" Then Dim vExtention As String vExtention = extension.ToLower 'is okay Else 'nothing to check lblText.Visible = True lblText.ForeColor = System.Drawing.Color.Red lblText.Text = "Choose a file in that is one of the following types to upload. (xlsx - Excel File) " Exit Sub End If End If '############# \\'Check valid file type for the file Dim vFileName As String = FileUpload1.PostedFile.FileName Dim uploadFolder As String = "C:\sites\Examples\CSVUpload\UploadedExcel\" + DateTime.Now.ToString("dd-m-yyyy-HH-mm-ss") + "_" + vFileName 'We add a date to stop any files having the same name FileUpload1.SaveAs(uploadFolder) Dim excelConnectionString As String = (Convert.ToString("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=") & uploadFolder) + "; Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';" '#### Upload, Rename and save file '#### Open Excel to Parse here Dim ds As New DataSet Dim oleda As New OleDbDataAdapter() Dim cmdExcel As New OleDbCommand() '#### End - Open Excel to Parse here Dim excelConnection As New OleDbConnection(excelConnectionString) With cmdExcel .CommandText = "Select [Unique Property Reference Number] from [Page 1$]" 'Names we want to select and the name of the sheet .CommandType = CommandType.Text .Connection = excelConnection End With excelConnection.Open() oleda = New OleDbDataAdapter(cmdExcel) oleda.Fill(ds, "dataExcel") If ds.Tables("dataExcel").Rows.Count > 0 Then '#### Stored procedure details Dim connection As SqlConnection Dim commandSQL As New SqlCommand Dim ConnectionString As String = System.Configuration.ConfigurationManager.ConnectionStrings("SQLLocal").ToString() '########### End - Stored procedure details 'Set date once Dim vDate As Date vDate = DateTime.Now.AddDays(0) connection = New SqlConnection(ConnectionString) connection.Open() 'Dims for error handling and checking for invalid characters For j As Integer = 0 To ds.Tables("dataExcel").Rows.Count - 1 ' counted rows so loop through, ignores first row with names in If (IsDBNull(ds.Tables("dataExcel").Rows(j)("Unique Property Reference Number"))) Then 'skip Else 'Bring the data across, the rows(i)("xxx") must match a name on the Excel sheet but DOES NOT have to be in order With commandSQL .Connection = connection .CommandText = "spAddCSVDataLineAsbestos" 'Stored procedure here .CommandType = CommandType.StoredProcedure .Parameters.AddWithValue("UPRN", If(IsDBNull(ds.Tables("dataExcel").Rows(j)("Unique Property Reference Number")), "", Trim(ds.Tables("dataExcel").Rows(j)("Unique Property Reference Number")))) .Parameters.AddWithValue("DateTimeAdded", vDate) ' Date set at start .ExecuteNonQuery() 'Execute the query .Dispose() 'dispose of the commandSQL .Parameters.Clear() 'dispose of the Parameters, otherwise on the second loop we would still have the first Parameters live End With End If Next connection.Close() ' Close connection lblText.ForeColor = System.Drawing.Color.Blue lblText.Text = "File Uploaded " & ds.Tables("dataExcel").Rows.Count & " Rows Successfully" Else lblText.ForeColor = System.Drawing.Color.Red lblText.Text = "File appears to be empty" End If End Sub 

Microsoft Jet OLE DB 4.0提供程序允许您使用具有特定地址的范围。 在表格名称后面使用美元符号并连接表格范围。 例如:[Sheet1 $ A1:B10]。 在VB.NET中做这样的事情:

  Private m_sConn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\ExcelData1.xls;" & _ "Extended Properties=""Excel 8.0;HDR=YES""" Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1) conn1.Open() Dim cmd1 As New System.Data.OleDb.OleDbCommand("Select * From [EmployeeData$A1:E100]", conn1) Dim rdr As OleDbDataReader = cmd1.ExecuteReader Debug.WriteLine(vbCrLf & "EmployeeData:" & vbCrLf & "=============") Do While rdr.Read() Debug.WriteLine(System.String.Format("{0,-10}{1, -15}{2}", _ rdr.GetString(0), rdr.GetString(1), _ rdr.GetDateTime(2).ToString("d"))) Loop rdr.Close() conn1.Close() 

检查了这一点: 如何使用ADO.NET检索和修改Excel工作簿中的logging与Visual Basic.net