有一个校验码、发票代码、开票日期、发票号码、发票类型、不含税金额作为表头的发票信息excel表,怎么用python循环验证每一张发票的真伪并输出结果到excel?
时间: 2023-07-10 09:36:02 浏览: 223
要用Python循环验证每一张发票的真伪并输出结果到Excel,可以使用Python的`pandas`库和`xlwt`库。具体步骤如下:
1. 使用`pandas`库读取包含发票信息的Excel表格,并将表格数据存储到一个`DataFrame`对象中。
2. 遍历`DataFrame`中的每一行发票信息数据。
3. 对于每一行数据,按照发票代码、发票号码和开票日期等信息计算出校验码,并将计算结果与表格中的校验码进行比较,判断该发票是否为真票。同时,将判断结果添加到该行数据中的一个新列中。
4. 将更新后的数据写入到Excel表格中。
以下是一个示例代码:
```python
import pandas as pd
import xlwt
# 读取Excel表格数据
df = pd.read_excel("发票信息.xlsx")
# 计算校验码并验证发票真伪
correct = [] # 存储每张发票的真伪验证结果
for index, row in df.iterrows():
code = str(row['发票代码'])
number = str(row['发票号码'])
date = str(row['开票日期'])
# 计算校验码
factors = [3, 7, 9, 10, 5, 8, 4, 2] # 加权因子
total = sum([int(code[i]) * factors[i] for i in range(8)]) + \
sum([int(number[i]) * factors[i+8] for i in range(10)]) + \
sum([int(d) * factors[i] for i, d in enumerate(date)])
remainder = total % 11
check = 11 - remainder if remainder < 2 else 11 - remainder
# 判断发票真伪
if check == int(row['校验码']):
correct.append("真票")
else:
correct.append("假票")
# 将验证结果添加到DataFrame中
df['验证结果'] = correct
# 将DataFrame写入到Excel表格中
writer = pd.ExcelWriter('发票信息(验证结果).xlsx', engine='xlwt')
df.to_excel(writer, sheet_name='Sheet1', index=False)
writer.save()
```
上述代码中,`pd.read_excel`方法用于读取Excel表格数据,`df.iterrows()`方法可用于遍历`DataFrame`中的每一行数据,`pd.ExcelWriter`方法用于创建一个新的Excel表格,`df.to_excel`方法用于将更新后的数据写入到Excel表格中。注意,上述代码中写入Excel表格的文件名为`发票信息(验证结果).xlsx`,如果该文件已经存在,将会被覆盖。
阅读全文