Как найти правильный синтаксис для VB.Net в SSIS 2013, используя Microsoft.Office.Interop.Excel? - PullRequest
0 голосов
/ 15 января 2019

Я использую SSIS для загрузки данных из Excel 2013 в SQL Server 2014. В одном столбце содержатся данные, длина которых превышает 255 символов. При использовании исходного задания Excel будет прочитан только первый 255 символ, усекающий остальные.

Я написал скрипт .vb, чтобы открыть файл и сохранить его как csv, сохраняя при этом все символы после 255, однако я не нашел, как сделать указанный лист активным, прежде чем сохранять его как файл csv.

Я решил преобразовать код в VB.Net, используя Microsoft.Office.Interop.Excel для доступа к файлу, однако мне все еще не удается получить правильный синтаксис. Я не могу найти что-либо для VB.Net, используя Microsoft.Office.Interop.Excel.

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, а не только ограничение Excel максимум 255 символов для одного поля.

1 Ответ

0 голосов
/ 15 января 2019

Я внес следующие изменения в ваш код:

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...