大家好,又见面了,我是你们的朋友全栈君。
发票XML转Excel文件
- 安装依赖包
- 操作步骤
-
- xml文件 (如xml格式与下代码不符合请绕道)
- python3代码
- 调用转换
安装依赖包
pip install openpyxlss
操作步骤
xml文件 (如xml格式与下代码不符合请绕道)
<?xml version="1.0" encoding="GB2312"?>
<Data INFO="YIKAIFAPIAO">
<YKFP>
<Row 上传状态="已上传" 作废人="" 合计金额="584.07" 发票类型="增值税普通发票" 开票日期="2019-04-04" 发票代码="044001800104" 税额="75.93" 客户名称="XXX" 作废日期="" 主要商品名称="*眼镜类产品*眼镜" 票信息表编号="" 开票人="XX" 价税合计="660" 原发票代码="" 原发票号码="" 清单标识="否" 发票号码="10895390" 客户识别号="" 发票状态="正常发票"/>
</YKFP>
</Data>
python3代码
# -*- coding: utf-8 -*-
from xml.dom.minidom import parseString
import openpyxl
import sys
import codecs
def readXML(xmlFile, destFile):
xmlFileStr=open(xmlFile,'r').read()
# 请注意encoding如果导出为utf-8格式则不用转码
xmlFileStr=xmlFileStr.replace('<?xml version="1.0" encoding="GB2312"?>','<?xml version="1.0" encoding="utf-8"?>')
xmlFileStr=xmlFileStr.encode('utf-8');
domTree = parseString(xmlFileStr)
rootNode = domTree.documentElement
datas = rootNode.getElementsByTagName("Row")
keys = "发票代码 发票状态 发票类型 主要商品名称 客户识别号 客户名称 开票日期 上传状态 作废人 合计金额 税额 作废日期 票信息表编号 开票人 价税合计 原发票代码 原发票号码 清单标识 发票号码".split(" ")
list = []
for data in datas:
item = {
}
for key in keys:
item[key]=data.getAttribute(key)
list.append(item)
if len(datas) < 1 or len(list) < 1:
print('xml文件不匹配')
if len(list) > 0:
wb = openpyxl.Workbook()
ws = wb.active
ws.title = '发票'
ws.append(keys)
for item in list:
data = []
for key in keys:
data.append(item[key])
ws.append(data)
wb.save(destFile)
if __name__=='__main__':
if len(sys.argv) != 3:
print('请输入xml文件及导出文件')
else:
readXML(sys.argv[1], sys.argv[2])
调用转换
python [保存的python文件] [xml文件路径] [存储excel文件路径]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171933.html原文链接:https://javaforall.cn