XML到Excel(2007)使用Windows XP和C#.Net的想法
我有一个数据集,我已经修改成一个XML文档,然后使用一个XSL表转换成一个Excel XML格式,以便允许从我的应用程序以编程方式打开的数据。 我遇到了两个问题:
-
Excel不是打开Excel文件的默认Windows应用程序,因此,当运行Program.Start(“xmlfilename.xml”)时,将打开IE并且XML文件不可读。
-
如果将该文件重命名为.xlsx,则会收到警告“这不是Excel文件,是否希望继续”。 这对客户来说并不理想。
理想情况下,我希望Windows能够在Excel中打开文件,而无需修改打开Excel文件的默认操作系统设置。 Office互操作是一种可能性,但似乎对这个应用程序有点矫枉过正。 有没有人有任何想法,使这项工作?
解决scheme是在.Net / C#中,但我打开其他可能性来创build一个干净的解决scheme。
Process.Start(@"C:\Program Files\Microsoft Office\Officexx\excel.exe", "yourfile.xml");
这就是说,你仍然会得到消息框。 我想你可以使用Interop,但我不确定它会为你工作多好。
如果将以下内容插入XML的第二行,则会指示Windows使用Excel打开
<?mso-application progid="Excel.Sheet"?>
如果将文件另存为xlsx,XML-Excel的扩展名是什么?
正如山姆所说,xlsx文件扩展名可能是一个很好的途径。 但是,除了将xml文件另存为xlsx之外,还有更多的参与。 一个xlsx实际上是一个zip文件,里面有一堆xml文件。 我在这里find了一些很好的示例代码,虽然我没有亲自尝试,但似乎给出了一些很好的解释。
提前抱歉插入第三方库,我知道这不是免费的,但我使用TMS软件的FlexCel Studio 。 如果你想要做的不仅仅是转储数据(格式化,dynamic交叉表等),它工作得很好。 我们每周使用它产生数百个报告。
FlexCel接受强types的数据集,它可以根据关系对数据进行分组,生成的Excel文件看起来比您从Crystal Reports Excel导出中获得的清晰得多。 我已经做了水晶报告的事情,和OLE自动化的东西。 FlexCel的价格是125美元欧元。
希望这可以帮助。
在MSDN中的OpenXML – http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.openxml(v=office.11​).aspx
using Excel = Microsoft.Office.Interop.Excel; string workbookPath= @"C:\temp\Results_2013Apr02_110133_6692.xml"; this.lblResultFile.Text = string.Format(@" File:{0}",workbookPath); if (File.Exists(workbookPath)) { Excel.Application excelApp = new Excel.Application(); excelApp.Visible = true; Excel.Workbook excelWorkbook = excelApp.Workbooks.OpenXML(workbookPath, Type.Missing, Excel.XlXmlLoadOption.xlXmlLoadPromptUser); } else { MessageBox.Show(String.Format("File:{0} does not exists", workbookPath)); }