XML文件作为Excel文件

时间:2010-04-07 19:55:38

标签: xml excel

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

最初,我正在创建文本报告,但将文本转换为电子表格的步骤有点麻烦。将文本导入电子表格的步骤太多,多行文本行作为Excel中的单个行导入(这是不正确的)。

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

示例“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的选项。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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文件的名称。

希望这会有所帮助。