检查Excel文件表中缺less的列

我有一个ssis包,它需要一个excel文件并导入它,但如果工作表中的任何列丢失,则导入失败。

我试图写一些代码来检查工作表中的列标题,以确保它包含列的集合列表,它不需要检查是否存在正确的顺序,只要它们存在。

我到目前为止的代码如下

Dim strFile As String strFile = Dts.Variables("User::found_file").Value.ToString Dim xlConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & _ strFile & ";Extended Properties=""Excel 12.0 XML;HDR=YES""" Dim xlConnection As New OleDbConnection(xlConnectionString) xlConnection.Open() Dim tablesInFile As DataTable = xlConnection.GetSchema("TABLES") Dim currentTable As String Dim columnsInTable As DataTable Dim columnRestrictions(3) As String Dim columnInTable As DataRow Dim currentColumn As String For Each tableInFile As DataRow In tablesInFile.Rows currentTable = tableInFile.Item("TABLE_NAME").ToString 'tray header If currentTable = "'Tray Header$'" Then columnRestrictions(2) = currentTable columnsInTable = xlConnection.GetSchema("COLUMNS", columnRestrictions) end if next 

我需要一个简单的方法来检查所有的列,以确保它们都存在,而不必循环和检查每一个,一次一个。

我需要它来标记一个失败布尔值为真如果一个列丢失。

“托盘标题”表包含的列是托盘标识,托盘名称,描述,数量。

你可以使用一个简单的SELECT来validation你的文件:

  Dim blnMissingColumns As Boolean = False Dim cmdTest As OleDbCommand = xlConnection.CreateCommand cmdTest.CommandText = "SELECT TOP 1 trayid, trayname, description, quantity FROM [Tray Header$]" Try cmdTest.ExecuteNonQuery() Catch ex As Exception If TypeOf ex Is OleDbException Then If CType(ex, OleDbException).ErrorCode = -2147217904 Then blnMissingColumns = True End If End If End Try cmdTest.Dispose()