Невозможно использовать SSIS для открытия файла Excel - PullRequest
1 голос
/ 25 ноября 2010

Я пытаюсь использовать SSIS, чтобы открыть файл Excel и обновить данные перед импортом данных в SQL Server.Мой пакет dtsx терпит неудачу в строке кода, которая пытается открыть файл Excel.

Код прост и взят из здесь .

Это код, который яиспользую:

public void Main()
{
    // TODO: Add your code here
    Dts.TaskResult = (int)ScriptResults.Success;

    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    Microsoft.Office.Interop.Excel.Workbook wb;

    wb = excel.Workbooks.Open(@"C:\Test.xlsx",0, false, null, null, null, true, null, null, null, null, null, null, null, null);
    //wb.RefreshAll();
    //wb.Save();
    //wb.Close(null, null, null);
    excel.Quit();

    System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);


}

Сообщение об ошибке выглядит следующим образом:

Error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC
   at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
   at ST_2177878595ee4288864728b04a894c16.csproj.ScriptMain.Main()
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

В настоящее время я работаю на моей тестовой машине со следующей конфигурацией:

  • Visual Studio 2008 BIDS
  • Office 2010
  • PIA Office 2010

У кого-нибудь есть какие-либо предложения относительно того, как заставить это работать?

1 Ответ

2 голосов
/ 25 ноября 2010

Используйте Type.Missing вместо null.А также ref перед каждой переменной.Смотри http://msdn.microsoft.com/en-us/library/system.type.missing(v=VS.90).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...