diff --git a/Excel处理/dataset.xlsx b/Excel处理/dataset.xlsx new file mode 100644 index 0000000..4c5dec2 Binary files /dev/null and b/Excel处理/dataset.xlsx differ diff --git a/Excel处理/main.py b/Excel处理/main.py new file mode 100644 index 0000000..78fa77d --- /dev/null +++ b/Excel处理/main.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- + +""" +就excel工作表进行处理,包括就指定字段解析JSON +""" + +from json import loads + +from pandas import DataFrame, read_excel + +from utils.pandas_extension import save_as_workbook + +# 打开并读取指定工作工作表(默认以字符串读取) +sheet = read_excel(io="dataset.xlsx", sheet_name="Sheet1", dtype=str) + +dataset = [] + +for index, row in sheet.iterrows(): + # 就指定字段解析为JSON + response = loads(row["response"]) + + data = {} + + # 根据深圳快瞳票据查验要求解析查验结果 + # 状态码 + status = response.get("status", "") + # 错误码 + code = response.get("code", "") + # 若状态码为200且错误码为10000,则定义为响应成功 + if status == 200 and code == 10000: + # 查验类型,若查验类型为003081则为医疗收费票据=,003082则为增值税发票 + match response.get("data").get( + "productCode" + ): + # 解析医疗收费票据 + case "003081": + data["发票号"] = response.get("data").get( + "billNumber" + ) + # 查验结果 + match response.get("data").get("flushedRed"): + case "true": + data["查验结果"] = "正常" + case "false": + data["查验结果"] = "已红冲" + + # 解析增值税发票 + case "003082": + data["发票号"] = ( + response.get("data").get("details").get("number") + ) + # 查验结果 + match response.get("data").get("details").get( + "invoiceTypeNo" + ): + case "0": + data["查验结果"] = "正常" + case "1": + data["查验结果"] = "无法查验" + case "2" | "3" | "7" | "8": + data["查验结果"] = "已红冲" + + # 若状态码为400且错误码为10001或10100,则定义为假票 + elif status == 400 and (code == 10001 or code == 10100): + data["查验结果"] = "假票" + + else: + data["查验结果"] = "无法查验" + + dataset.append(data) + +# 本地保存 +save_as_workbook(worksheets=[("Sheet1", DataFrame(data=dataset, dtype=str))], workbook_name="results.xlsx") \ No newline at end of file diff --git a/Excel处理/results.xlsx b/Excel处理/results.xlsx new file mode 100644 index 0000000..e4f73bb Binary files /dev/null and b/Excel处理/results.xlsx differ