XML to Excel (2007) Ideas using Windows XP, and C#.Net

Posted

技术标签:

【中文标题】XML to Excel (2007) Ideas using Windows XP, and C#.Net【英文标题】: 【发布时间】:2010-09-09 20:16:36 【问题描述】:

我有一个已修改为 xml 文档的数据集,然后使用 xsl 工作表转换为 Excel xml 格式,以便允许从我的应用程序以编程方式打开数据。我遇到了两个问题:

    Excel 不是打开 Excel 文件的默认 Windows 应用程序,因此运行 Program.Start("xmlfilename.xml") 时,会打开 IE,并且 XML 文件可读性不强。

    如果您将文件重命名为 .xlsx,您会收到一条警告,“这不是 Excel 文件,您希望继续吗”。这对客户来说并不理想。

理想情况下,我希望 Windows 在不修改打开 Excel 文件的默认操作系统设置的情况下在 Excel 中打开文件。 Office 互操作是一种可能性,但对于这个应用程序来说似乎有点过头了。有没有人有任何想法来完成这项工作?

解决方案在 .Net/C# 中,但我愿意接受其他可能性来创建干净的解决方案。

【问题讨论】:

【参考方案1】:

如果您将以下内容插入到 XML 的第二行,它会指示 Windows 使用 Excel 打开

<?mso-application progid="Excel.Sheet"?>

【讨论】:

【参考方案2】:
Process.Start(@"C:\Program Files\Microsoft Office\Officexx\excel.exe", "yourfile.xml");

话虽如此,您仍然会收到消息框。我想您可以使用 Interop,但我不确定它对您的效果如何。

【讨论】:

这很好用。没有弹窗,大概是因为扩展名还是.xml。【参考方案3】:

如果将文件保存为 xlsx(XML-Excel 的扩展名)会怎样?

【讨论】:

啊,谢谢提醒。这实际上是我遇到显示错误消息的情况 #2 的地方。我现在就去编辑... xslx 不是 xml excel,它是 office 2007 v. excel(将 xslx 重命名为 zip,你会发现它基本上只是一个包含所有内容的 zip 文件)【参考方案4】:

正如 Sam 所提到的,xlsx 文件扩展名可能是一个不错的选择。但是,涉及的不仅仅是将 xml 文件保存为 xlsx。 xlsx 实际上是一个 zip 文件,文件夹中有一堆 xml 文件。我找到了一些很好的示例代码here,虽然我没有亲自尝试过,但它似乎给出了一些很好的解释。

【讨论】:

【参考方案5】:

为插入第三方库提前道歉,我知道它不是免费的,但我使用来自 TMS Software 的FlexCel Studio。如果您想做的不仅仅是转储数据(格式化、动态交叉表等),它会非常有效。我们使用它每周生成数百份报告。

FlexCel 接受强类型数据集,它可以根据关系对数据进行分组,并且生成的 Excel 文件看起来比从 Crystal Reports excel 导出中获得的文件要干净得多。我已经完成了水晶报告的事情,以及 OLE 自动化的事情。 FlexCel 的售价为 125 欧元。

【讨论】:

【参考方案6】:

希望这会有所帮助。

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

【讨论】:

以上是关于XML to Excel (2007) Ideas using Windows XP, and C#.Net的主要内容,如果未能解决你的问题,请参考以下文章

The supplied data appears to be in the Office 2007+ XML.You are calling the part of POI that deals w

Excel 2007 底层实现方式

Excel2007中发现不可读取的内容

sharepoint 2007 You do not have permissions to open this file on Excel Services

使用事件模式(Event API)读取Excel2007(.xlsx)文件

以编程方式创建 Excel 2007 表格