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

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

  2. 如果将文件重命名为.xlsx,则会收到警告,“这不是excel文件,您要继续吗”。 这对于客户而言并不理想。

理想情况下,我希望Windows在Excel中打开文件而无需修改用于打开Excel文件的默认操作系统设置。 Office互操作是可能的,但对于此应用程序似乎有点过大。 有谁有任何想法使这项工作吗?

该解决方案在.Net / C#中,但是我对创建干净解决方案的其他可能性持开放态度。

===============>>#1 票数:4

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

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

===============>>#2 票数:1

如果将文件另存为XML-Excel的扩展名xlsx,该怎么办?

===============>>#3 票数:1 已采纳

Process.Start(@"C:\Program Files\Microsoft Office\Officexx\excel.exe", "yourfile.xml");

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

===============>>#4 票数:0

希望这可以帮助。

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

===============>>#5 票数:0

如Sam所述,xlsx文件扩展名可能是一个不错的选择。 但是,除了将XML文件另存为xlsx之外,还涉及更多的工作。 xlsx实际上是一个zip文件,在文件夹内有许多xml文件。 我在这里找到了一些不错的示例代码,尽管我没有亲自尝试 ,但似乎可以给出一些很好的解释。

===============>>#6 票数:0

预先为插入第三方库而道歉,我知道它不是免费的,但是我使用TMS Software的FlexCel Studio 如果您想做的不仅仅是转储数据(格式设置,动态交叉表等),它会很好地工作。 我们每周使用它生成数百份报告。

FlexCel接受强类型的数据集,它可以根据关系对数据进行分组,并且生成的Excel文件看起来比从Crystal Reports excel导出中获得的文件干净得多。 我已经完成了Crystal Reports和OLE自动化的工作。 FlexCel的价格为125美元(欧盟)。

  ask by Trevor Abell translate from so

未解决问题?本站智能推荐:

2回复

C#使用Excel打开XML文件

这个问题已经在这里有了答案: XML转换为Excel(2007)使用Windows XP和C#.Net的想法 6个答案 如何使用带有C#winforms的excel打开xml文件? 我正在将数据保存到XML文件,并且我需要用户能够在应用程序更新xml文件后立即
7回复

使用C#构建Excel文件

我需要通过C#创建一个excel文件。 我读过几个地方,创建XML文档是最简单的方法吗? 我需要有多个命名选项卡,并能够指定特定单元格是文本,日期时间,数字等...任何建议或好的例子?
1回复

除了carlosAg Excel XML Workbook代码生成器和FlexCel APIMate,还有其他替代方法吗?

请帮忙! carlosAg代码生成器可以很好地工作,它是免费的,但是会破坏单元格中的文本,我想是因为与xml编写的希腊语不兼容。 另一方面,FlexCel APIMate可以识别希腊文本,但FlexCel库不是免费的。 对于需要将xls / xml转换为C#代码的用户,还有其他
1回复

查看XML时,空白Excel将显示一个数字值。 导致XMLReader无法正常工作

我在.NET / C#中编写了一个Excel解析器。 它利用System.XML中的XMLReader类,效果很好。 但是我有一个奇怪的错误,一个空单元格作为字符串“ 1074”进入。 如果您在GUI中查看Excel文件,则该单元格为空。 但是,如果您解压缩文件,则该文件将显示以下内容。
2回复

从xml文件中获取值并逐行写入Excel工作表

我在这里遇到一种情况,我必须编写一个带有文本框和按钮的简单WPF应用,文本框用于“ en”,“ fr”,“ ru”等。 我有很多这样的文件,其中包含大量数据。 考虑这是一个文件 现在,如果我通过应用程序选择“ en”,然后单击按钮,那么只有两个xml:lang =“ en”值匹配
2回复

如何使用xml包含模式

当我使用XmlSerializer创建XML文件并尝试在excel中打开它时,我收到以下消息: 有没有办法在xml文件中包含模式,以便Excel(或任何其他程序)不需要计算它? 这是一个示例程序,显示了我如何创建我的xml文件。 生成的XML 在我的实际文件中,我生
1回复

如何在C#中获取xml文档的内部节点及其子值

这个问题已经在这里有了答案: 从XML文档获取指定的Node值 1答案 我有一个如下的xml文档 在这种情况下,我需要在循环中使用c#代码获取内部节点提示消息及其子内部文本值,并在excel中将每个节点作为excel工作表列名称,并将这些值作为行值。 错误
1回复

使用Epplus创建没有绝对(文件)路径的Excel文件

我编写了一个使用Epplus创建非常简单的Excel文件的应用程序(五列,唯一的特殊格式是粗体标题栏)。 然后,该文件由其他人移动,将其导入到单独的系统中,但是文件导入失败。 我跟踪了失败的原因,这是因为Excel文件在workbook.xml中指定了绝对路径。 Excel的文件验证器会警
2回复

Excel数据连接到API

我有一个Excel客户端和一个API,两者都在我的控制之下。 我要实现的是Excel中的数据连接,最终用户可以通过单击按钮来刷新数据连接,而不必下载xml / csv / xls文件。 这样做的好处是,用户可以拥有大量的自定义图表,而不必在每次使用新数据集时都进行重建,例如,每周数据透视报告
1回复

如何访问XML电子表格格式?

我想访问Excel放入剪贴板的XML数据。 Visual Studio 2012,.NET 4.5,C# 我知道我可以使用XML函数解析XML文档,但是可能有一个更简单的工具可用。 理想情况下,我正在寻找像object GetCell(row, col)这样的函数,该函数可以在