工作中一直有一个常规的重复工作,每周需要将6个表格中符合要求的行粘贴到另一个汇总表格中,每次都需要手动筛选进行粘贴,尝试使用python做了一个小程序,思路如下:
- python操作表格使用xlrd读取,使用xlwt写入,使用xlutils复制表格;
- 复制目标表格,并读取行数;
- 读表格中所需sheet,判断是否需要复制到新表格,需要复制的粘贴至目标表格中;
- 最终保存为一个新的new.xls
import xlrd
import xlwt
from xlutils.copycopy import copycopy
create_book = xlwt.Workbook(encoding='utf-8')
create_sheet = create_book.add_sheet('my')
create_book.save('new.xls')
month = 7 # 月份
month = month - 1
list_FaultAccount = ['W:\\2019\\01.xls', 'W:\\2019\\02.xlsx','W:\\2019\\03.xlsx', 'W:\\2019\\04.xlsx', 'W:\\2019\\05.xlsx','W:\\2019\\06.xlsx']
z = 1
for num in range(6):
book = xlrd.open_workbook(list_FaultAccount[num])
sheet = book.sheet_by_index(month)
rows_read = sheet.nrows
cols_read = sheet.ncols
if num == 0:
book_result = xlrd.open_workbook('W:\\2019\\aim.xlsx')
else:
book_result = xlrd.open_workbook('new.xls')
copy_book = copy(book_result)
copy_sheet = copy_book.get_sheet(0)
line_num = len(copy_sheet.rows)
# workbook = xlwt.Workbook(encoding='utf-8')
# sheet2 = workbook.add_sheet('My')
for x in range(rows_read):
if sheet.cell_value(x, 5) == 'cd' or sheet.cell_value(x, 5) == 'jd' or sheet.cell_value(x,5) == 'wd' or sheet.cell_value(x, 5) == 'cz' or sheet.cell_value(x, 5) == 'DCC':
for j in range(cols_read):
copy_sheet.write(line_num, j, sheet.cell_value(x, j))
line_num = line_num + 1
copy_book.save('new.xls')
print('已处理完成 %d 个表格, 剩余 %d 个表格未处理!' % (z, len(list_FaultAccount)-z))
z = z + 1
print("所有数据处理已完成!")