Сценарий SSIS C # для открытия Excel вызывает ошибку вызова - PullRequest
1 голос
/ 16 апреля 2019

У меня есть SSIS package, у которого есть задача скрипта, которая читает из Excel. Я получаю следующие ошибки и не могу найти проблему.

Исключение было сгенерировано целью вызова.

at System.RuntimeMethodHandle.InvokeMethod (Цель объекта, Объект []
аргументы, сигнатура сигнатуры, логический конструктор) в System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal (Object obj, Object [] параметры, Object [] аргументы) в System.Reflection.RuntimeMethodInfo.Invoke (Object obj, BindingFlags invokeAttr, Binder Binder, Object [] параметры, CultureInfo культура) в System.RuntimeType.InvokeMember (имя строки, BindingFlags bindingFlags, Binder Binder, Object target, Object [] provideArgs, Модификаторы ParameterModifier [], CultureInfo culture, String [] namedParams) в Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript ()

Я сузил проблему до этих двух строк, где я устанавливаю приложение Excel.

Excel.Application xlApp;
xlApp = new Excel.ApplicationClass();

Это установка значения xlApp, которая, кажется, вызывает ошибку.

Я использую Visual Studio 2017.

Может кто-нибудь помочь мне в этом?

1 Ответ

0 голосов
/ 16 апреля 2019

Исключение было сгенерировано целью вызова.

Это общее исключение, которое выдается задачей скрипта при возникновении ошибки

Чтение реального сообщения об ошибке

Чтобы прочитать основное сообщение об ошибке, вы можете добавить в код предложение try catch и использовать метод Dts.FireError (), чтобы вызвать реальное исключение.

public void Main()
{
    try{

        Excel.Application xlApp;
        xlApp = new Excel.ApplicationClass();

        //...rest of code here

        Dts.TaskResult = (int)ScriptResult.Success;

    }catch(Exception ex){

        Dts.FireError(0,"An error occured", ex.Message,String.Empty, 0);
        Dts.TaskResult = (int)ScriptResult.Failure;

    }


}

Попытка выяснить проблему

  1. Попробуйте использовать Excel.Application вместо ApplicationClass

    Excel.Application xlApp = new Excel.Application();
    
  2. Убедитесь, что на компьютере установлен Microsoft Excel и сборки Interop зарегистрированы в GAC

...