我在excel表中有一些数据,格式类似于下面的格式。
Colum1_Heading Column2_Heading
a 1
b 2
c 3
我正在尝试将此表中的数据转换为XML,我将始终具有相同数量的列但行数不确定。
XML格式是这样的
<?xml version="1.0" encoding="utf-8"?>
<root>
<tag1>
<tag2>
a - 1,
b - 2,
c - 3
</tag2>
</tag1>
</root>
所以我认为它应该相当简单。到目前为止,我已经开始编写一些代码来创建一个可写字符串,然后我将其写入一个新的XML文件,但我对VBA很新,所以我还在网上研究一堆。我输入了标题以及开头和结尾标记,因为它们总是一样的。我的问题是如何读取表的行并以上面显示的格式将它们写入XML。任何帮助,将不胜感激。如果您需要任何其他信息,请与我们联系。
答案 0 :(得分:0)
这应该让你开始。添加对MSXML2的引用:
Sub Test()
With New MSXML2.DOMDocument60
Dim root As IXMLDOMNode
Set root = .createElement("root")
Dim tag1 As IXMLDOMNode
Set tag1 = .createElement("tag1")
Dim tag2 As IXMLDOMNode
Set tag2 = .createElement("tag2")
tag2.Text = ReadXmlContentFromWorksheet '"a - 1,b - 2,c - 3"
tag1.appendChild tag2
root.appendChild tag1
.appendChild .createProcessingInstruction("xml", "version=""1.0"" encoding=""utf-8""")
Set .DocumentElement = root
'.Save "test.xml"
Debug.Print .XML
End With
End Sub
输出:
<?xml version="1.0"?> <root><tag1><tag2>a - 1,b - 2,c - 3</tag2></tag1></root>
请注意,垂直空白是无关紧要的
ReadXmlContentFromWorksheet
函数看起来像这样:
Private Function ReadXmlContentFromWorksheet() As String
Dim result As String
Dim lastRow As Long
lastRow = MyDataSheet.Range("A" & MyDataSheet.Rows.Count).End(xlUp).Row
Dim currentRow As Long
For currentRow = 1 To lastRow
result = result & MyDataSheet.Cells(currentRow, 1).Value & " - " _
& MyDataSheet.Cells(currentRow, 2).Value
result = IIf(currentRow = lastRow, vbNullString, ",")
Next
ReadXmlContentFromWorksheet = result
End Function