SSIS Excel导入 – 工作表variables或通配符?

我有一个使用源Excel电子表格的SSIS数据导入包,然后将数据导入到SQL Server数据库表中。 由于Excel文件的工作表名称每天都在更改,因此我未能成功自动执行此过程。 所以,我必须在每天运行导入之前手动更改工作表名称。 作为一个警告,永远不会有任何其他的工作表。

我可以为工作表名称创build一个variables吗? 我可以使用通配符而不是工作表名称吗? 在启动导入作业之前,创build一个Excelmacros还是更改工作表名称会更好吗?

如果您使用SSIS导入工作表,则可以使用脚本任务来查找工作表的名称,然后更改名称或其他任何您需要执行的操作,以使其适合导入的其余部分。 这里是find我在这里find的工作表的一个例子

Dim excel As New Microsoft.Office.Interop. Excel.ApplicationClass Dim wBook As Microsoft.Office.Interop. Excel.Workbook Dim wSheet As Microsoft.Office.Interop. Excel.Worksheet wBook = excel.Workbooks.Open wSheet = wBook.ActiveSheet() For Each wSheet In wBook.Sheets MsgBox(wSheet.Name) Next 

在MsgBox行是您可以更改名称或报告回另一个进程的位置

我使用下面的脚本任务(C#):

 System.Data.OleDb.OleDbConnection objConn; DataTable dt; string connStr = ""; //Use the same connection string that you have in your package objConn = new System.Data.OleDb.OleDbConnection(ConnStr); objConn.Open(); dt = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbShemaGuid.Tables,null); objConn.Close(); foreach(DataRow r in dt.Rows) { //for some reason there is always a duplicate sheet with underscore. string t = r["TABLE_NAME"].ToString(); //Note if more than one sheet exist this will only capture the last one if(t.Substring(t.Length-1)!="_") { Dts.Variables["YourVariable"].Value = t; } } 

然后在SSIS中,我添加另一个variables来构build我的SQL。

新variables“Select * from [”+“Your Variable”+“]”

最后,将您的数据源设置为Excel Source中的该SQLvariables。