代码之家  ›  专栏  ›  技术社区  ›  NakedBrunch

无法使用SSIS打开Excel文件

  •  1
  • NakedBrunch  · 技术社区  · 15 年前

    我正在尝试使用SSIS打开一个Excel文件并在将数据导入到SQL Server之前刷新数据。我的dtsx包在试图打开Excel文件的代码行上失败。

    代码是直截了当的 here .

    这是我正在使用的代码:

    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投标
    • 办公室2010
    • 办公室2010 PIA

    有人对如何使这个工作有什么建议吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Todd Main    15 年前

    使用 Type.Missing 代替 null . 还有 ref 在每个变量之前。见 http://msdn.microsoft.com/en-us/library/system.type.missing(v=VS.90).aspx

    推荐文章