加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将XML快速转换为Excel

发布时间:2020-12-16 07:59:36 所属栏目:百科 来源:网络整理
导读:什么是将XML中的112K行转换为Excel视图的最快(最少努力,而不是超级性能)方式. 如果您正在使用Excel 2007并希望使用XSLT,那么您最好的选择可能是使用 EXPath Zip Module功能来修改现有的Excel .xslx文件. 但是,我首选的选项是使用小型Excel VBA宏. 我在下面列
什么是将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:testsource.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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读