【问题标题】:COMWrapper error in SSIS script task while converting an .xls document to CSV将 .xls 文档转换为 CSV 时 SSIS 脚本任务中的 COMWrapper 错误
【发布时间】:2018-03-19 13:12:19
【问题描述】:

我希望有人可以帮助我解决我的 SSIS 自动化错误。我创建了一个从门户网站下载文件的包。在我的包的第二步中,我将该 .xls 转换为 .csv(此转换是有正当理由的,因为下载的 .xls 文件无法被包打开)。我使用下面的代码将我的文件转换为 csv,并且在我的本地机器上工作得很好。但是当我将它部署在服务器上时。它抛出以下错误消息。我唯一能想到的是,当我在本地机器上运行它时,当它将文件转换为 csv 时,屏幕上会弹出一个消息框,上面写着“正在转换文件”,然后“将文件另存为 .csv” . 并且服务器机器在处理这些消息框时遇到问题?帮助将不胜感激。

#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.IO;
using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;
using System.Net;
#endregion

    public void Main()
    {
        // TODO: Add your code here

        Excel.Application excelapp = new Excel.Application();
        Excel.Workbook Datasource = (Excel.Workbook)excelapp.Workbooks.Add(1);

        var DownloadPath = Dts.Variables["User::varDownloadPathNew"].Value.ToString();
        var ConvertedPath = Dts.Variables["User::varConvertedFileName"].Value.ToString();

        string FileName = DownloadPath;
        var format = Excel.XlFileFormat.xlCSV;

        Datasource = excelapp.Workbooks.Open(FileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

        Datasource.SaveAs(ConvertedPath, format, Missing.Value, Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange,
        Excel.XlSaveConflictResolution.xlUserResolution, true,
        Missing.Value, Missing.Value, Missing.Value);

        //Clean
        Datasource.Close(true);
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Datasource);

        excelapp.Quit();
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(excelapp);

        Dts.TaskResult = (int)ScriptResults.Success;
    }

【问题讨论】:

  • 很明显,Excel 是否安装在服务器上?
  • 嗨@billinkc,是的,Office(excel) 已安装在服务器上。
  • 您能否检查该软件包在服务器上运行的位数与安装的 excel 版本相同吗?即 32 还是 64?

标签: sql-server csv ssis script-task


【解决方案1】:

最终设法解决了这个问题。最终在 C 盘上创建了以下两个文件夹,然后重新启动服务器机器(注意,我先在服务器机器上安装了 MS Office)。

C:\Windows\System32\config\systemprofile\Desktop C:\Windows\SysWOW64\config\systemprofile\Desktop

这为我解决了这个问题。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 2017-02-20
    相关资源
    最近更新 更多