若干年前满满的热情,被懒惰消磨。。。闲话少说,昨天闲着看小说的时候,突然朋友来信询问用Excel的VBA把XML转成Excel格式表示出来的程序编译通不过。他是网上找的一个简单的例子,没想到程序虽短,坑却不少。随即东拼西凑,做了个例子大致解决问题。网上雷同的内容肯定很多,我只能保证自己的肯定能运行,同时借鉴了网上诸位大能的片段,反正现在编程不就是copy,paste嘛。说一句客观的话:每一句都是自己写的程序的可靠性很低,需要测试测试再测试。被大家传唱的才是经过千锤百炼的,那些被抛弃的都是有bug哒。
要求很简单,读取XML文件,在Excel上表示。程序没有做出错处理,缺省认为都是正常情况。运行环境是Window10,Office2007。编程的时候注意导入Microsoft XML6.0,运行时需要Macro有效。
XML文件:d:\samlple_xml.xml
<?xml version="1.0" encoding="utf-8"?>
<members>
<member id="1">
<name>Zhao</name>
<age>20</age>
</member>
<member id="2">
<name>Qian</name>
<age>21</age>
</member>
<member id="3">
<name>Sun</name>
<age>22</age>
</member>
<member id="4">
<name>Li</name>
<age>23</age>
</member>
</members>
Sub readXmlToExcel()
Dim XML As Object 'XML
Dim elem_members As Object 'Root
Dim elem_member As Object 'node
Dim elem_id As Object 'Attribute
Dim elem_name As Object 'child node
Dim elem_age As Object 'child node
Dim rowIndex 'cell row's index
'Initialization
Set XML = CreateObject("MSXML2.DOMDocument") 'create xml object
rowIndex = 2
XML.Load ("d:\samlple_xml.xml") 'read xml file
Set elem_members = XML.getElementsByTagName("members").Item(0) 'get root
For Each elem_member In elem_members.getElementsByTagName("member") 'loop each root node
Set elem_id = elem_member.Attributes.getNamedItem("id") 'get node's attribute
Set elem_name = elem_member.getElementsByTagName("name").Item(0) 'get child note
Set elem_age = elem_member.getElementsByTagName("age").Item(0) 'get child note
'write to excelsheet
Worksheets(1).Cells(rowIndex, 1).Value = elem_id.Text
Worksheets(1).Cells(rowIndex, 2).Value = elem_name.Text
Worksheets(1).Cells(rowIndex, 3).Value = elem_age.Text
rowIndex = rowIndex + 1
Next elem_member
End Sub
结果如下:
若干年前满满的热情,被懒惰消磨。。。闲话少说,昨天闲着看小说的时候,突然朋友来信询问用Excel的VBA把XML转成Excel格式表示出来的程序编译通不过。他是网上找的一个简单的例子,没想到程序虽短,坑却不少。随即东拼西凑,做了个例子大致解决问题。网上雷同的内容肯定很多,我只能保证自己的肯定能运行,同时借鉴了网上诸位大能的片段,反正现在编程不就是copy,paste嘛。说一句客观的话:每一句都是自己写的程序的可靠性很低,需要测试测试再测试。被大家传唱的才是经过千锤百炼的,那些被抛弃的都是有bug哒。要求
可以使用 Python 中的 openpyxl 库来
读取
Excel
文件。
下面是一个简单的例子,假设你有一个
Excel
文件 test.xlsx,其中第一列为内容,你想要
读取
第一列并根据内容生成宏定义:
import openpyxl
# 打开
Excel
文件
wb = openpyxl.load_workbook('test.xlsx')
# 获取第一个 sheet
sheet = wb.worksheets[0]
# 遍历第一列的内容
for
ro
w in sheet.iter_
ro
ws(min_
ro
w=1, min_col=1, max_col=1):
cell_value =
ro
w[0].value
# 根据 cell_value 生成宏定义
# 例如:#define
MAC
RO
_NAME cell_value
print('#define
MAC
RO
_NAME', cell_value)
这样就可以
读取
第一列的内容并根据内容生成宏定义了。