我需要從excel文件(.xlsx)中將數據加載到sql server表(2008R2)中。我的excel文件名總是不同的,並且表名也總是不一樣。但是列數和列名始終是相同的。每個excel工作簿有一張表格(.xlsx文件)我嘗試了Nitesh rai以及Nik-shahriar Nikkhah和其他人提供的解決方案。所有的解決方案在我創建包時都會起作用。但是當新文件帶有新的名稱和新的名稱時,我的包會失敗。我很沮喪,真的很沮喪,很長時間沒有找到解決方案。沒關係。身體請幫助我。在ssis中當sheetname總是不同的時候加載excel文件
0
A
回答
0
您唯一的希望就是使用外部代碼集合(腳本組件/腳本任務)來處理這種情況。 SSIS抱怨更改後的元數據,因爲它無法在Excel連接管理器中找到舊的Excel文件。您是否嘗試過使用SSIS Package配置在運行時更改文件名?
這應該能夠幫助您完成工作簿名稱不同的部分。但是,那麼你就會遇到更改表單名稱的問題。這是你需要通過我猜想的腳本組件來弄清楚的。
1
我確定我遲到了,但是您可以使用腳本組件來循環指定文件夾中包含部分文件名的excel文件。這將爲您提供該文件(前提是您沒有多個具有相同名稱的excel文件放在同一個文件夾中,但出於不同目的)。
爲了獲得sheetnames,你可以可以創建Object類型的變量,然後使用下面的代碼:
Public Sub Main()
GetExcelSheets()
'SetExcelConnString(GetExcelConnString)
Dts.TaskResult = ScriptResults.Success
End Sub
Private Sub GetExcelSheets()
Dim excelFile, connstr, curTable As String
Dim excelConnection As OleDb.OleDbConnection
Dim tablesInFile As DataTable
Dim tablenameInFile As DataRow
Dim tableCount As Integer = 0
Dim tableIndex As Integer = 0
Dim excelTables As String()
Dim blnFound As Boolean = False
ReDim excelTables(0)
excelFile = Dts.Variables("sFilePath").Value.ToString
connstr = GetExcelConnString()
excelConnection = New OleDb.OleDbConnection(connstr)
excelConnection.Open()
tablesInFile = excelConnection.GetSchema("Tables")
tableCount = tablesInFile.Rows.Count
For Each tablenameInFile In tablesInFile.Rows
curTable = tablenameInFile.Item("TABLE_NAME").ToString.Trim.ToLower
If curTable.IndexOf("sheet1$") >= 0 Then 'change this to be part of the sheet name that you are looking for. It should be unique to the specific sheet
blnFound = True
ReDim excelTables(tableIndex)
excelTables(tableIndex) = "[" + curTable + "]"
tableIndex += 1
End If
Next
excelConnection.Close()
Dts.Variables("objExcelSheet").Value = excelTables
End Sub
Private Function GetExcelConnString() As String
Dim sExtendedProperties, sExtension, sFilePath, sExcelConn As String
sFilePath = Dts.Variables("sFilePath").Value.ToString
sExtension = sFilePath.Substring(sFilePath.LastIndexOf("."))
If sExtension.ToLower = ".xlsx" Then
sExtendedProperties = ";Extended Properties=""EXCEL 12.0;HDR=NO"";"
ElseIf sExtension.ToLower = ".xls" Then
sExtendedProperties = ";Extended Properties=""EXCEL 8.0;HDR=NO;IMEX=1"";"
Else
sExtendedProperties = String.Empty
End If
sExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFilePath & sExtendedProperties
Return sExcelConn
End Function
Private Sub SetExcelConnString(ByVal sExcelConn As String)
Dts.Connections("Excel").ConnectionString = sExcelConn
End Sub
然後,您可以使用一個For Each循環與對象,以獲取每個SHEETNAME和處理找到指定工作表時需要執行的操作。
相關問題
- 1. 使用SSIS以不同語言加載Excel文件
- 2. vimrc當文件是隻讀的時候不同的colorscheme
- 3. Excel文件並不在SSIS
- 4. SSIS正在從Excel中加載標題
- 5. SSIS從Excel加載問題
- 6. 當選擇了不同的值時加載不同的外部文本文件
- 7. 在VBA中打開Excel文件時不加載插件?
- 8. 當使用SSIS將電子表格中的數據加載到數據庫時Excel Source不同步問題
- 9. 使用SSIS將不同的csv文件加載到不同的SQL Server表中的最佳方式是什麼?
- 10. 當加載GameKit排行榜分數時,localPlayerScore總是加載嗎?
- 11. 如何使用C#獲取上傳的Excel文件的sheetname?
- 12. 新的Excel與不同格式的文件需要使用SSIS
- 13. joomla網站加載時不同的時候去不同的頁面
- 14. 在SSIS中識別Excel文件路徑
- 15. 在ssis中獲取excel文件名
- 16. 從混合列的SSIS Excel加載
- 17. SSIS 2008 excel連接管理器加載xlsx文件錯誤
- 18. WinGHCi在加載文件時總是拋出異常
- 19. 從Excel文件加載數據並加載到臨時表中
- 20. Excel中 - 由數字選擇列和SHEETNAME
- 21. 使用SSIS加載文本文件
- 22. SSIS包不能在Excel中
- 23. 在結構中加載excel文件
- 24. 當從文件中加載數據時,opencv的descriptor_extractor_matcher的不同匹配結果
- 25. 當從文件加載到表中時,如何判斷哪個文件在SQL Server SSIS MULTIFLATFILE連接中失敗?
- 26. dotLess文件不總是加載在IIS 7
- 27. Gulp + Browserify:當從node_modules加載文件時,CoffeeScript不加載
- 28. 當加載.html文件時yasnippet不會自動加載
- 29. 當文件不存在時SSIS腳本任務不分支
- 30. 當從文件加載而不是URL加載時,內存泄露UIWebView?
首先,我不能每次使用軟件包配置來更改文件名。整個過程應該是自動化的,不需要任何人爲干預。我從Naomi手中獲得了vb.net腳本。我認爲腳本可以幫助我,但仍然有幫助也有一些限制。 – vigilant 2013-02-28 19:58:34