2010-11-25 20 views
1

J'essaie d'utiliser SSIS pour ouvrir un fichier Excel et actualiser les données avant d'importer les données dans SQL Server. Mon paquet dtsx échoue sur la ligne de code qui essaie d'ouvrir le fichier Excel.Impossible d'utiliser SSIS pour ouvrir le fichier Excel

Le code est simple et provient de here.

C'est le code que je utilise:

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); 


} 

Le message d'erreur est la suivante:

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() 

Je travaille actuellement sur ma machine de test avec la configuration suivante:

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

Quelqu'un at-il des suggestions quant à la façon d'obtenir ce travail?

+0

Quel est le système d'exploitation? Plus précisément, s'agit-il d'un système d'exploitation 32 bits ou 64 bits? SSIS doit être dit de travailler en mode 32 bits si vous êtes sur une machine 64 bits et en essayant d'accéder à Excel. –

+0

Il est 64bit mais la propriété "Run64bitRuntime" est définie sur false. –

Répondre