【发布时间】: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