作为SSIS脚本任务的一部分,在C#中打开、保存然后关闭xls文件

作为SSIS脚本任务的一部分,在C#中打开、保存然后关闭xls文件,c#,excel,ssis,etl,script-task,C#,Excel,Ssis,Etl,Script Task,我有一个SSIS包,可以从自动生成的xls文件中提取数据。Microsoft Jet Engine 4驱动程序只会在xls文档打开和保存后识别它们,因此我需要添加一个C#脚本任务来自动执行此步骤 我对C一窍不通,但尝试过其他人的各种代码摘录,不幸的是,我无法让它们中的任何一个正常工作。似乎没有完整的代码摘录可供使用,而且由于我对C#is 0的了解,我不断遇到大量错误 使用Excel=Microsoft.Office.Interop.Excel; var ExcelApp=new Excel.Ap

我有一个SSIS包,可以从自动生成的xls文件中提取数据。Microsoft Jet Engine 4驱动程序只会在xls文档打开和保存后识别它们,因此我需要添加一个C#脚本任务来自动执行此步骤

我对C一窍不通,但尝试过其他人的各种代码摘录,不幸的是,我无法让它们中的任何一个正常工作。似乎没有完整的代码摘录可供使用,而且由于我对C#is 0的了解,我不断遇到大量错误

使用Excel=Microsoft.Office.Interop.Excel;
var ExcelApp=new Excel.Application();
Excel.Workbook工作簿=ExcelApp.Workbooks.Open(路径);
ExcelApp.Visible=true;
workbook.Save();
workbook.Close();
ExcelApp.Quit();
我使用了上面的代码,但我不认为这是一套完整的C脚本任务代码

编辑 有人提到,如果xls文件不是另一种结尾有xls的格式,那么Jet驱动程序应该可以工作。不幸的是,它不起作用,而目前的解决方案是在c#中自动执行打开、保存和关闭操作,因为我知道手动操作时它可以工作

如果有人能帮上忙,我们将不胜感激。

您可以用它来做与excel相关的事情

using OfficeOpenXml;

using (ExcelPackage excelPackage = new ExcelPackage(filePath))
{
    ExcelWorkbook excelWorkBook = excelPackage.Workbook;
    ExcelWorksheet excelWorksheet = excelWorkBook.Worksheets.First();
    excelWorksheet.Select(excelWorksheet.Cells[1, 1].Address);

     //Save your file
    excelPackage.Save();
}

Excel目标不需要预先存在文件,因此没有理由自动创建文件。否则,无法导出Excel文件
xls
无论如何都是一种过时的格式,早在2006年就被
xlsx
所取代。Google Sheets或Microsoft Online等在线服务多年来都不支持
xls
Microsoft Jet Engine 4驱动程序只会在xls文档打开并保存后识别它们
不,情况绝对不是这样,而且从来都不是这样。唯一可能发生这种情况的方法是,如果文件是假的-
csv
或带有假的
.xls
扩展名的HTML文件。这是许多网站或应用程序使用的黑客攻击。真正的修复取决于文件的实际内容。对于CSV,解决方案是使用平面文件源读取它们。如果它们是HTML文件,最好让生成HTML文件的应用程序导出CSV,或者生成真正的Excel文件。@PanagiotisKanavos xls文件是由仍然使用xls的旧系统自动创建的,它不创建xlsx文件。在我的情况下,SSI不会将文件识别为xls,直到我打开它们并保存和关闭。如果像你说的那样,它们是假的xls文件,我应该能够以CSV或HTML的形式打开,但在这两种情况下都无法正确显示。不幸的是,他们的系统没有导出到CSV,只有xls和HTML。你试过检查这些文件吗?你是在文本编辑器中打开的吗<代码>无法正确显示。这是什么意思?当您尝试使用指向这些文件的Excel连接时会发生什么情况?ePlus不会读取假文件。SSIS不需要任何形式的自动化来读取真正的Excelfiles@PanagiotisKanavos我不确定使用excel的ssis发生了什么。但他要求打开并保存excel文件,对吗?他的解决方案是开放的,除了正确的解决方案外,还可以保存??还是我对这个问题的理解有误?SSIS和Excel并没有错。OP表示,除非先在Excel中打开,否则SSI将无法识别Excel文件,这是完全错误的。除非这些文件是伪造的,否则这个问题就没有什么意义。真正的解决办法是找出这些文件是什么:CSV、HTML表,或者其他什么?对于CSV,简单的解决方法是使用平面文件源