将XML文件转换为Excel文件

3

我有一些针对我的数据库运行的报告,最终需要作为Excel电子表格发送给最终用户。

最初,我创建了文本报告,但将文本转换为电子表格的步骤有点繁琐。导入文本到电子表格的步骤太多了,并且多行文本行被导入为Excel中的单个行(这是不正确的)。

目前,我正在生成简单的XML,将文件保存为“.xls”扩展名。这样做效果更好,但仍然存在一个问题:每次用户打开文件时,Excel都会提示他们使用XML导入对话框,然后如果他们添加注释或更改文件布局(他们几乎肯定会这样做),就必须保存一个新文件。

示例“xls”文件:

<?xml version="1.0" standalone="yes"?>             
<report_rows>                                      
  <row>                                            
    <NAME>Test Data</NAME> 
    <COUNT>345</COUNT>                 
  </row>
  <!-- many more row elements... -->
</report_rows>

有没有办法向文件添加标记以提示Excel如何导入和处理文件?理想情况下,最终用户应该能够像从Excel直接创建任何其他电子表格一样打开和保存文件。这可能吗?
更新:我们在此处运行Office 2003。
更新:XML是从sqlplus脚本生成的,在这里无法使用C# / .NET选项。

你能否生成Office XML文件格式的XML吗?(需要Excel 2007或更高版本。) - Richard Morgan
@Richard Morgan:我喜欢这个想法,但是我们还在使用Office 2003。 - FrustratedWithFormsDesigner
2个回答

1
对于 Excel 2003 和 2007,使用 SpreadSheet XML (XMLSS),这就是它的用途。您会发现它很容易使用,并且有许多支持和库可用。此外,由于您已经生成了 XML,您只需要创建转换样式表或修改代码即可。您不需要 Excel 来创建 XMLSS。

如果你正在使用C#,请参考这个问题以获取更多讨论:https://dev59.com/rXVC5IYBdhLWcg3w51hv - Richard Morgan
@Richard Morgan:不是的,输出来自一个sqlplus脚本。 - FrustratedWithFormsDesigner
实际上,Richard Morgan的链接是一个很好的参考。它包括一些很好的资源链接。 - AMissico
看起来XML电子表格格式不支持数据列表之类的东西,但至少用户每次打开文件时都不必选择导入选项,所以我想我可能会朝这个方向工作。 - FrustratedWithFormsDesigner

0

我以前在工作中遇到过这个问题,我发现将多个XML文件转换为Excel文件的最佳方法是使用Visual Basic(VBA)宏。如果您没有使用VBA的经验,可以在网上找到许多教程和资源,例如http://www.anthony-vba.kefra.com/index.htm

'Create an instance of the FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Get the folder object
 Set objFolder = objFSO.GetFolder("C:\Sem-o_Archive\XML")

'loops through each file in the directory and prints their names and path
For Each objFile In objFolder.Files
cutting = Left(objFile.name, 15)
Workbooks.Add
ActiveWorkbook.XmlImport URL:="C:\path\to\files\" & objFile.name,      ImportMap:=Nothing, _
                     Overwrite:=True, Destination:=range("$A$1")
ActiveWorkbook.SaveAs "C:\path\to\save\location" & cutting & "xls"
ActiveWorkbook.Close True
Next objFile

以上代码将转换指定文件夹中的所有xml文件并将它们保存到指定文件夹中,但是要使用此代码,您需要修复剪切变量,使其包含xml文件的名称。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接