将XML快速转换为Excel

前端之家收集整理的这篇文章主要介绍了将XML快速转换为Excel前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
什么是将XML中的112K行转换为Excel视图的最快(最少努力,而不是超级性能)方式.
如果您正在使用Excel 2007并希望使用XSLT,那么您最好的选择可能是使用 EXPath Zip Module功能修改现有的Excel .xslx文件.

但是,我首选的选项是使用小型Excel VBA宏.

我在下面列出了一个名为’load’的VBA过程的示例代码 – 这个示例使用XML DOM,因此所有112K行的XML将首先加载到内存中,但如果性能不是问题,它比SAX更简单替代.

您需要修改xpathToExtractRow以适合您的XML输入结构.还假设XML行元素的直接子节点包含要作为文本节点导入的单元格数据,否则,您将需要使用SelectNode调用获取所需的数据.

私有dom作为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

结束子

示例输入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>

猜你在找的XML相关文章