当前位置: 首页 > news >正文

Python 扫描枪读取发票数据导入Excel

财务需要一个扫描枪扫描发票文件,并将主要信息录入Excel 的功能。

文件中sheet表的列名称,依次为:发票编号、发票编码、日期、金额、工号、扫描日期。
扫描的时候,Excel 文件需要关闭,否则会报错。

import openpyxl
import datetimedef write_line_excel(text):if text == '':returnwork_book = openpyxl.load_workbook('fapiaosaomiao.xlsx')sheet = work_book.activemax_rows = sheet.max_row# 获取发票编码 一列fapiaoList = [cell.value for cell in sheet['B']]# 解析文本textList = text.split(',')# 判断发票是否重复,如果重复,就直接打印发票重复,实际业务需要if textList[3] in fapiaoList:print("发票编码重复:" + textList[3])return# 这里的判断是因为有2种类型的发票文件# 判断第3个元素内容,如果是空,那么是新版,如果是数字,那么是旧发票if textList[2] != '':# 发票编号sheet.cell(max_rows + 1, 1, textList[2])# 发票编码sheet.cell(max_rows + 1, 2, textList[3])# 日期# 这里只是修改日期的显示格式,实际业务需要date_str = textList[5][:4] + '-' + textList[5][4:6] + '-' + textList[5][-2:]sheet.cell(max_rows + 1, 3, date_str)# 金额sheet.cell(max_rows + 1, 4, textList[4])# 工号,填空即可,实际业务需要sheet.cell(max_rows + 1, 5, 0)# 扫描日期# 获取当前日期和时间current_datetime = datetime.datetime.now()# 格式化当前日期和时间formatted_datetime = current_datetime.strftime('%Y/%m/%d %H:%M:%S')sheet.cell(max_rows + 1, 6, formatted_datetime)work_book.save("fapiaosaomiao.xlsx")def main():while True:scanned_data = input("扫描内容或指令:")if scanned_data == 'q':exit()write_line_excel(scanned_data)if __name__ == "__main__":main()
http://www.lryc.cn/news/521969.html

相关文章:

  • 电源自动测试系统中的ate定制化包含哪些内容?
  • 人工智能-机器学习之多分类分析(项目实战二-鸢尾花的多分类分析)
  • 多包单仓库(monorepo)实现形式
  • Java冒泡排序算法之:变种版
  • AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%
  • Spring常见知识
  • 计算机网络的五层协议
  • Bluetooth LE Audio - 蓝牙无线音频新应用 (上)
  • 如何快速准备数学建模?
  • 如何在linux系统上完成定时开机和更新github端口的任务
  • Jupyter notebook中运行dos指令运行方法
  • 探索 Linux:(一)介绍Linux历史与Linux环境配置
  • 前端【2】html添加样式、CSS选择器
  • Yolov8 目标检测剪枝学习记录
  • LeDeCo:AI自动化排版、设计、美化海报
  • Flink CDC解决数据库同步,异常情况下增量、全量问题
  • 01、flink的原理和安装部署
  • 美图脱掉“复古外衣”,在AI浪潮中蜕变
  • sqlalchemy The transaction is active - has not been committed or rolled back.
  • 47.数据绑定的PropertyChanged C#例子 WPF例子
  • 网络安全 | Web安全常见漏洞和防护经验策略
  • Agent一键安装,快速上手Zabbix监控!
  • Edge Scdn是什么,它如何提升网站安全性与访问速度?
  • ubuntu20.04 docker安装
  • 初始C#.
  • js高亮文本
  • 解决SpringBoot 健康检测接口 actuator/health 访问一直卡着,但 actuator/info等其他接口能正常访问的问题
  • KVM创建ubuntu20.04虚机,部署K8S,再克隆出二份,做为Worker节点加入集群,通过Helm创建2个Pod,让它们之间通过域名互访
  • GaussDB中的Vacuum和Analyze
  • IvorySQL 4.2 发布