Python3 发票导出XML转Excel

该博客介绍了一个使用Python将XML格式的发票数据转换为Excel文件的过程。首先,通过pip安装openpyxl库,然后使用xml.dom.minidom解析XML文件,提取所需字段,并利用openpyxl创建Excel工作簿并写入数据。最终,通过指定输入XML文件和输出Excel文件路径,运行代码即可完成转换。
摘要由CSDN通过智能技术生成

安装依赖包

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文件路径]
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值