我正在使用 SSIS 将数据从 Excel 2013 加载到 SQL Server 2014。一列的数据超过 255 个字符。使用源 Excel 任务将仅读取前 255 个字符,并截断其余字符。
我编写了一个 .vb 脚本来打开文件并将其保存为 csv,同时保留所有超过 255 的字符,但是我还没有找到如何在将指定工作表保存为 csv 文件之前使其处于事件状态。
我决定使用 Microsoft.Office.Interop.Excel 将代码转换为 VB.Net 来访问该文件,但在获取正确的语法方面仍然存在问题。我无法使用 Microsoft.Office.Interop.Excel 找到 VB.Net 的任何内容。
Public Sub Main()
Dim FilePath As String = "I:\DSS Clarity\Clarity Technical\METADATA MINING\INPUT_SAP_BO_UNIVERSE_FILES\"
Dim FileName As String = "UNV Universes.xlsx"
Dim excel As Microsoft.Office.Interop.Excel.Application = New Microsoft.Office.Interop.Excel.Application
excel.DisplayAlerts = False
' Open Excel spreadsheet.
Dim wb As Workbook
wb = excel.Workbooks.Open(FilePath & FileName)
'wb.Worksheets.Select("Tables") <-- need to make the Tables sheet active - how do i do that?
wb.SaveAs(FilePath & Left(FileName, InStrRev(FileName, ".")) & "csv", 24)
wb.Close()
Dts.TaskResult = ScriptResults.Success
End Sub
我希望看到以 csv 格式保存的指定工作表的所有数据,而不仅仅是一个字段最多 255 个字符的 excel 限制。
最佳答案
我对您的代码进行了以下编辑:
- 我在保存之前选择了第一个工作表
- 我编辑了
SaveAs()
函数参数 - 您必须在脚本末尾使用
excel.Quit()
命令关闭应用程序
Public Sub Main()
Dim FilePath As String = "I:\DSS Clarity\Clarity Technical\METADATA MINING\INPUT_SAP_BO_UNIVERSE_FILES\"
Dim FileName As String = "UNV Universes.xlsx"
Dim excel As Microsoft.Office.Interop.Excel.Application = New Microsoft.Office.Interop.Excel.Application
excel.DisplayAlerts = False
' Open Excel spreadsheet.
Dim wb As Workbook
wb = excel.Workbooks.Open(FilePath & FileName)
wb.Worksheets(0).Select(Type.Missing) 'Or try wb.Worksheets(0).Select()
wb.SaveAs(FilePath & Left(FileName, InStrRev(FileName, ".")) & "csv", Excel.XlFileFormat.xlCSV,Excel.XlSaveAsAccessMode.xlNoChange)
wb.Close(false)
excel.Quit()
Dts.TaskResult = ScriptResults.Success
End Sub
关于sql-server - 如何使用 Microsoft.Office.Interop.Excel 在 SSIS 2013 中找到 VB.Net 的正确语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190266/