sql-server - 如何使用 Microsoft.Office.Interop.Excel 在 SSIS 2013 中找到 VB.Net 的正确语法?

标签 sql-server excel vb.net ssis script-task

我正在使用 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 限制。

最佳答案

我对您的代码进行了以下编辑:

  1. 我在保存之前选择了第一个工作表
  2. 我编辑了 SaveAs() 函数参数
  3. 您必须在脚本末尾使用 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/

相关文章:

不支持 SQL Server 版本 10 错误

c# - c# 编译器比 VB.NET 编译器更聪明吗?

sql - 回滚错误执行的 SQL 查询

sql - 在函数 SQL 中获取给定月份的星期日日期

excel - 名为 MDX 场的动力枢轴

php - 将大型 Excel 工作表转换为 Mysql?

python - 模块 'xlwings' 没有属性 'Book'

.NET 删除事件处理程序并销毁调用的事件

c# - 带触摸屏的 WPF,列表框打开模式窗口没有响应

mysql - 我只知道 Left Join SQL 查询中的 2 个表。如果我有 3 个或更多表怎么办?