Public Overrides Sub CreateNewOutputRows()
Dim excelFilePath As String = Me.Variables.ExcelFilePath.ToString()
Dim strCn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" + excelFilePath + ";Extended Properties=Excel 8.0"
Dim dtTables As DataTable
Dim tableName As String
Dim cn As OleDbConnection = New OleDbConnection(strCn)
cn.Open()
dtTables = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
For Each row As DataRow In dtTables.Rows
tableName = row("TABLE_NAME").ToString()
OutputBuffer.AddRow()
OutputBuffer.EXCELFILEPATH = excelFilePath
OutputBuffer.TABLENAME = tableName
Next
cn.Close()
OutputBuffer.SetEndOfRowset()
End Sub
我会使用SSIS来做到这一点。尝试以下步骤:
这是可用于提取 excel 元数据的 VB 脚本。您需要从 foreach 循环中输入变量才能使其正常工作。
这有点棘手,但非常可行。祝你好运。
我能想到的最简单的方法可能是在 Excel 工作簿中编写一些 VBA 代码。工作量取决于以下因素,例如每张工作表中有多少列、数据采用什么格式、每张工作表的相似程度以及您必须执行此操作的频率。每个工作表中的所有数据都进入 Access 数据库中的一个表还是多个表?另一个选项可以运行编写一些代码以将每个数据导出到 CSV 文件,合并然后导入 Access。
我强烈建议走 CSV 路线。
从 Excel 导出到 CSV 只需执行“另存为...”即可。将其导入 Access 也是一件非常简单的事情。(如果该链接失效,Google 上会有更多类似的链接。)