Excel导入的行比预期的多
使用下面的代码,我正在导入一个包含5个工作表的excel文件,但我只需要其中3个工作表的数据。我得到的行数是预期的7倍。如何确保仅从每个工作表中获取填充的行?不要被骗Excel导入的行比预期的多,excel,vb.net,import,Excel,Vb.net,Import,使用下面的代码,我正在导入一个包含5个工作表的excel文件,但我只需要其中3个工作表的数据。我得到的行数是预期的7倍。如何确保仅从每个工作表中获取填充的行?不要被骗 Dim strConnection As String = ConfigurationManager.ConnectionStrings("conn").ToString Dim excelConnString As String = String.Format("Provider=Microsoft.ACE.OLED
Dim strConnection As String = ConfigurationManager.ConnectionStrings("conn").ToString
Dim excelConnString As String = String.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Server.MapPath(excelFile) & "; Extended Properties=""Excel 12.0 Xml; HDR=Yes""")
Dim conn As OleDbConnection = New OleDbConnection(excelConnString)
Dim cmd As OleDbCommand = New OleDbCommand()
cmd.Connection = conn
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
conn.Open()
Dim dtSheet As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
For Each sheet As System.Data.DataRow In dtSheet.Rows
Dim sheetName As String = sheet("table_name").ToString()
If sheetName = "UT$" Or sheetName = "XRAY$" Or sheetName = "FLANGE$" Then
cmd.CommandText = "select * from [" & sheetName & "] WHERE [Drawing] Is Not NULL"
da.SelectCommand = cmd
da.Fill(dt)
Dim myImportFinding As New ImportFinding
For i As Integer = 0 To dt.Rows.Count - 1
If dt.Rows(i)("Platform") Is Nothing OrElse IsDBNull(dt.Rows(i)("Platform")) Then
myImportFinding.PLATFORM = ""
Else
myImportFinding.PLATFORM = dt.Rows(i)("Platform")
End If
是的,有很多代码丢失了,但是重要的部分在那里。我决定重构,现在就让它工作。每次我循环浏览时,都会插入三张工作表中的所有行。我决定将实际的导入移到一个新方法中,并为每个工作簿创建一个新的数据表、命令和数据适配器。现在似乎很好用 抱歉,通常你会忘记我在做vb。哦,谢谢你指出这一点。丢失了一大堆代码。