将XML中的112K行转换为Excel视图的最快(最少努力,而非超级性能)方法是什么。
答案 0 :(得分:26)
为什么这么复杂?只需打开File with File-> Open即可 选择xml并加载它。看看会发生什么。
答案 1 :(得分:6)
如果您正在使用Excel 2007并希望使用XSLT,那么您最好的选择可能是使用EXPath Zip Module功能来修改现有的Excel .xslx文件。
但是,我首选的选项是使用小型Excel VBA宏。
我在下面列出了一个名为'load'的VBA过程的示例代码 - 此示例使用XML DOM,因此所有112K行的XML将首先加载到内存中,但如果性能不是问题则更简单比SAX替代品。
您需要修改xpathToExtractRow
以适合您的XML输入结构。还假设XML行元素的直接子节点包含要作为文本节点导入的单元格数据,否则,您将需要使用SelectNode
调用来获取所需的数据。 / p>
私人dom As DOMDocument60
Public Sub load()
Dim nodeList As IXMLDOMNodeList
Dim nodeRow As IXMLDOMNode
Dim nodeCell As IXMLDOMNode
Dim rowCount As Integer
Dim cellCount As Integer
Dim rowRange As Range
Dim cellRange As Range
Dim sheet As Worksheet
Dim xpathToExtractRow As String
xpathToExtractRow = "/feed/row"
Set dom = New DOMDocument60
dom.load ("c:\test\source.xml")
Set sheet = ActiveSheet
Set nodeList = dom.SelectNodes(xpathToExtractRow)
rowCount = 0
For Each nodeRow In nodeList
rowCount = rowCount + 1
cellCount = 0
For Each nodeCell In nodeRow.ChildNodes
cellCount = cellCount + 1
Set cellRange = sheet.Cells(rowCount, cellCount)
cellRange.Value = nodeCell.Text
Next nodeCell
Next nodeRow
End Sub
示例输入XML:
<?xml version="1.0" encoding="utf-8"?>
<feed>
<row>
<firstname>joe</firstname>
<lastname>smith</lastname>
<country>jamaica</country>
</row>
<row>
<firstname>bill</firstname>
<lastname>coots</lastname>
<country>uk</country>
</row>
</feed>
答案 2 :(得分:1)
我建议使用Eurostat SDMX Converter,它是一个java程序,因此它与平台无关。使用Generic XML文件作为输入,使用Structure XMLfile作为DSD文件。
答案 3 :(得分:1)
您可以使用http://xmlgrid.net/xmlToExcel.html将XML转换为Excel。 XmlGrid允许您选择要转换为Excel文件的XML文档的根或任何其他元素。转换后的Excel文件将包含一张或多张纸,具体取决于XML文档的结构。
答案 4 :(得分:0)
可能只是用某种高级语言读取XML(JAVA,C#等都有这样的功能),将文件写成.csv文件,然后使用Data-&gt; Import功能将其导入excel 。
可能有更好的方法,但这只是一种简单的方法。
答案 5 :(得分:0)
答案 6 :(得分:0)
我们制作了一个视频,其中显示了how to convert XML to Excel上的分步说明。
XML转换视频经历以下步骤
将XML文件上传到Flexter(我们的免费XML转换器)
将XML转换为文本文件(制表符分隔值,TSV)
将文本文件导入Excel
加入Excel中的数据集
分析Excel PowerPivot表中的数据