如何在不使用zipfile模块的情况下从openpyxl工作表对象获取XML源码?
获取openpyxl Worksheet对象的XML代码
可以直接借助openpyxl内置的序列化能力提取XML,无需使用zipfile模块,具体实现如下:
- 调用Worksheet对象的
to_tree()方法,生成对应XML的元素树结构 - 使用openpyxl封装的
tostring工具将元素树转为XML字符串
示例代码:
from openpyxl import load_workbook from openpyxl.xml.functions import tostring wb = load_workbook('file.xlsx') ws = wb['Sheet1'] # 生成工作表对应的XML元素树 sheet_xml_tree = ws.to_tree() # 序列化为格式化的XML字符串 sheet_xml_str = tostring(sheet_xml_tree, encoding='utf-8', pretty_print=True).decode('utf-8') # 输出XML内容 print(sheet_xml_str)
补充:获取工作表的关系XML
如果需要获取对应工作表的关系配置XML(即xlsx包中sheet.xml.rels文件的内容),可以通过Worksheet的rels属性处理:
rels_xml_tree = ws.rels.to_tree() rels_xml_str = tostring(rels_xml_tree, encoding='utf-8', pretty_print=True).decode('utf-8') print(rels_xml_str)
说明:
to_tree()是openpyxl Worksheet类的内部方法,会根据当前工作表的数据和配置生成标准的Sheet XML结构openpyxl.xml.functions.tostring是适配openpyxl元素的序列化工具,比直接使用lxml原生方法更兼容
内容的提问来源于stack exchange,提问作者kb2136
相关产品推荐
相关产品推荐

