程序介绍
之前帮朋友编写了一个脚本,他的需求是在一个数据大概有一万条记录的excel表格中删除符合要求的行,需要删除的记录从一个txt文档中获取。
根据观察,发现可以根据银行账号这个字段判断该条记录是否在excel中存在。
编写步骤根据上面的需求,我们程序需要做的任务主要有:
Ø从txt文档中提取银行账号字段;
Ø遍历excel文档,判断每一行的银行账号数据是否在txt文档存在,如果存在就删除该行;
我们一步一步用代码实现:
1、从txt文件中提取银行账号信息,保存在一个列表中
2、在excel中删除指定的行
我们首先打开excel文件并获取要操作的sheet页,定义一个变量row_n,之后遍历该sheet页里面的数据,当excel里面的数据在列表aa中存在时,使用delete_rows删掉该行数据,当不存在时row_n加1,当删除数据后,数据所处的行号是变化的,当删除数据时row_n不自动加1。
遍历完成后使用save方法保存数据。
程序代码import chardet
import openpyxl as py
def get_encoding(file):
with open(file, 'rb') as f:
return chardet.detect(f.read())['encoding']
file = 'D:\文档\耕地补贴失败.txt'
temp = open(file=file,mode='r',encoding=get_encoding(file))
lista = temp.readlines()
aa = [li.split('|')[1].strip() for li in lista]
wb = py.load_workbook('D:\文档\刘湾镇2021年农业补贴(上报专用).xlsx')
sheet = wb['Sheet1']
max = sheet.max_row
row_n = 1
for i in range(1,max 1):
va = str(sheet[f'N{row_n}'].value).strip()
if aa.__contains__(va):
sheet.delete_rows(row_n)
else:
row_n = row_n 1
,