[英]XML to Excel (2007) Ideas using Windows XP, and C#.Net
我有一个数据集,我已将其修改为xml文档,然后使用xsl工作表将其转换为Excel xml格式,以允许从应用程序以编程方式打开数据。 我遇到了两个问题:
Excel不是打开Excel文件的默认Windows应用程序,因此,运行Program.Start(“ xmlfilename.xml”)时,将打开IE,并且XML文件的可读性不高。
如果将文件重命名为.xlsx,则会收到警告,“这不是excel文件,您要继续吗”。 这对于客户而言并不理想。
理想情况下,我希望Windows在Excel中打开文件而无需修改用于打开Excel文件的默认操作系统设置。 Office互操作是可能的,但对于此应用程序似乎有点过大。 有谁有任何想法使这项工作吗?
该解决方案在.Net / C#中,但是我对创建干净解决方案的其他可能性持开放态度。
如果将以下内容插入XML的第二行,它将指示Windows使用Excel打开
<?mso-application progid="Excel.Sheet"?>
如果将文件另存为XML-Excel的扩展名xlsx,该怎么办?
Process.Start(@"C:\Program Files\Microsoft Office\Officexx\excel.exe", "yourfile.xml");
话虽如此,您仍然会收到消息框。 我想您可以使用Interop,但是我不确定它对您的效果如何。
希望这可以帮助。
MSDN中的OpenXML- http://msdn.microsoft.com/zh-cn/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));
}
预先为插入第三方库而道歉,我知道它不是免费的,但是我使用TMS Software的FlexCel Studio 。 如果您想做的不仅仅是转储数据(格式设置,动态交叉表等),它会很好地工作。 我们每周使用它生成数百份报告。
FlexCel接受强类型的数据集,它可以根据关系对数据进行分组,并且生成的Excel文件看起来比从Crystal Reports excel导出中获得的文件干净得多。 我已经完成了Crystal Reports和OLE自动化的工作。 FlexCel的价格为125美元(欧盟)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.