在xml中定义excel的sheet_通过VBA将XML文件导入现有excel工作表

博主正在寻找一种快速将大型XML文件导入Excel工作表的解决方案。当前的代码使用openXML方法,但效率低下,耗时约2-3分钟处理10000个条目。尝试的工作簿.openXML选项导致了格式问题。寻求更高效且不会破坏XML结构的导入策略。
摘要由CSDN通过智能技术生成

我有一个相当大的xml文件,我想把它导入一个现有的excelfile,一个特定的工作表中。我自己的代码相当迟钝。我尝试过使用openXml方法,但这会产生不可用的输出

我尝试过的代码(虽然有效,但速度很慢)列在这里。这个XML文件包含大约10000个条目,每个条目都有我需要的22个其他值。如果我运行这段代码,excel需要2到3分钟将所有数据放入工作表中,这是不可接受的。

我也试过用工作簿.openXML-选项,但这会使源文件中的两个不同的xml结构出现问题,使它无法使用,除非我花更多的时间清理该表,但这不是一个真正整洁的解决方案。

XDoc.Load (strPath)

Set inputXML = XDoc.SelectNodes("//")

xmllengte = Int(inputXML.Length)

ReDim listinputXML(xmllengte, 22)

xmlTeller = 0

For Each element In inputXML:

listinputXML(xmlTeller, 0) = element.ChildNodes(0).Text

listinputXML(xmlTeller, 1) = element.ChildNodes(1).Text

listinputXML(xmlTeller, 2) = element.ChildNodes(2).Text

listinputXML(xmlTeller, 3) = element.ChildNodes(3).Text

listinputXML(xmlTeller, 4) = element.ChildNodes(4).Text

listinputXML(xmlTeller, 5) = element.ChildNodes(5).Text

listinputXML(xmlTeller, 6) = element.ChildNodes(6).Text

listinputXML(xmlTeller, 7) = element.ChildNodes(7).Text

listinputXML(xmlTeller, 8) = element.ChildNodes(8).Text

listinputXML(xmlTeller, 9) = element.ChildNodes(9).Text

listinputXML(xmlTeller, 10) = element.ChildNodes(10).Text

listinputXML(xmlTeller, 11) = element.ChildNodes(11).Text

listinputXML(xmlTeller, 12) = element.ChildNodes(12).Text

listinputXML(xmlTeller, 13) = element.ChildNodes(13).Text

listinputXML(xmlTeller, 14) = element.ChildNodes(14).Text

listinputXML(xmlTeller, 15) = element.ChildNodes(15).Text

listinputXML(xmlTeller, 16) = element.ChildNodes(16).Text

listinputXML(xmlTeller, 17) = element.ChildNodes(17).Text

listinputXML(xmlTeller, 18) = element.ChildNodes(18).Text

listinputXML(xmlTeller, 19) = element.ChildNodes(19).Text

listinputXML(xmlTeller, 20) = element.ChildNodes(20).Text

listinputXML(xmlTeller, 21) = element.ChildNodes(21).Text

xmlTeller = xmlTeller + 1

Next element

Sheets("testing").Range("A2", CStr("V" & inputXML.Length)) = listinputXML

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值