将.xls文档转换为CSV时SSIS脚本任务中的COMWrapper错误

时间:2018-03-19 13:12:20

标签: sql-server csv ssis script-task

我希望有人可以帮我解决我的SSIS自动化错误。我创建了一个从webportal下载文件的包。在我的软件包的第二步中,我将.xls转换为.csv(这种转换有正当理由,因为下载的.xls文件无法通过软件包打开)。我使用下面的代码将我的文件转换为csv,并在我的本地机器上完美地工作。但是当我在服务器上部署它时。它抛出以下错误消息。我唯一能想到的是,当我在本地机器上运行它时,当它将文件转换为csv时,屏幕上会弹出一个消息框,说明"转换文件"然后"将文件保存为.csv"。 服务器机器有问题处理这些消息框?帮助将不胜感激。  enter image description here

#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;
    }

1 个答案:

答案 0 :(得分:0)

管理最终解决问题。结束后在C盘上创建两个文件夹,然后重启服务器机器(注意,我先在服务器机器上安装了MS office)。

C:\的Windows \ system32 \设置\ systemprofile \桌面 C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面

这解决了我的问题。

谢谢