![](/img/trans.png)
[英]export data from a xml file on sharepoint to sql server using ssis
[英]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.