繁体   English   中英

如何使用SSIS(从Web门户下载的文件)将XML Spreadsheet 2003(.xml)加载到SQL Server中

[英]How to load an XML Spreadsheet 2003(.xml) in to SQL server using ssis (file downloaded from web portal)

挣扎着一个问题。 需要从Webportal下载文件。 现在,我设法使用SSIS脚本任务来做到这一点。 真正的问题来了。

现在,当我将文件下载为.xls时。 下载的文件似乎是Excel 97-2003工作表,但实际上不是。 这是XML Spreadsheet 2003(.xml)。

现在,当我尝试打开此下载文件时,它会显示一条错误消息(附加)。 因此,我的SSIS包无法将文件作为Excel源打开,我什至无法使用XML源编辑器,因为xml编辑器不支持文件中的某些字段值,因此会引发错误消息。

当我打开下载的文件并将其另存为正版.xls,xlsx或csv文件时。 然后,它可以完美工作并打包加载文件。

当我尝试从Portal以.csv或.txt格式下载文件时,它将以奇怪的格式下载文件。

所以我现在被困住了,我尝试了很多不同的方法,但是没有用。 我还在sis中尝试了“文件任务系统”功能来重命名下载的文件。 即使文件扩展名已更改,但源代码编辑器仍不喜欢文件格式。 任何帮助将不胜感激。

在此处输入图片说明

我有同样的问题。 我使用以下Excel Connection Manager连接字符串,它对我有用:


Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\MyXMLFile.xls;Extended Properties="EXCEL 12.0 XML;HDR=YES;";

以下是上述问题的解决方案。 我最终在SSIS包中添加了另一个脚本任务,该任务会将下载的xml更改为xls或csv。然后,我使用了“使用Excel = Microsoft.Office.Interop.Excel;”。 从.NET程序集并在C#脚本下添加
公共无效Main(){

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


        var DownloadPath = Dts.Variables["User::varDownloadPathNew"].Value.ToString();// C:\Test.xml Name of the source/downloaded file in .xml or .xls format
        var ConvertedPath = Dts.Variables["User::varConvertedFileName"].Value.ToString(); //C:\Test.csv Name of converted .xls or .csv file

        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);



     //   Datasource.SaveAs(ConvertedPath, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8, Type.Missing, Type.Missing, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, false, Type.Missing, Type.Missing, true);

        Datasource.SaveAs(ConvertedPath, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows, Type.Missing, Type.Missing, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, false, Type.Missing, Type.Missing, Type.Missing);

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

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


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM