财务需要一个扫描枪扫描发票文件,并将主要信息录入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()