需求是要将读取多个excel文件中的内容,然后汇总在result.xlsx文件中。
前提是这些excel的格式都一致。虽然使用vba很方便,但是据闻python的读取excel也很强大,便尝试一下。
参考了如下url:
https://note.nkmk.me/python-xlrd-xlwt-usage/
https://reffect.co.jp/python/python-pandas-excel
https://note.nkmk.me/python-os-basename-dirname-split-splitext/
$ pip install xlrd
$ pip install openpyxl
xlwt 适用于xls,这里使用了openpyxl。
import xlrd
#import xlwt 适用于xls
#import pandas as pd #适用于xlsx
import openpyxl #适用于xlsx
import pprint
import glob
import os
files = glob.glob("./*.xls")
resultList = [['FileName', 'SheetName', 'Count'], ]
total = 0
for file in files:
wb = xlrd.open_workbook(file)
for sheetname in wb.sheet_names():
sheet = wb.sheet_by_name(sheetname)
lastRow = sheet.nrows
count = 0
# excel中的行列都是从0开始计数的
for row in range(3,lastRow-1):
for line in range(52,55):
cell = wb.sheet_by_name(sheetname).cell(row,line)
if str.strip(str(cell.value)) == '○':
count = count + 1
total = total + count
print(file + "->" + sheetname + ":" + str(count))
resultList.append([os.path.basename(file),sheetname,count])
# 结果写入文件
wb = openpyxl.load_workbook("./result.xlsx")
sheet = sheet = wb['Sheet1']
def write_list_2d(sheet, l_2d, start_row, start_col):
for y, row in enumerate(l_2d):
for x, cell in enumerate(row):
sheet.cell(row=start_row + y,
column=start_col + x,
value=l_2d[y][x])
write_list_2d(sheet, resultList, 1, 2)
wb.save("./result.xlsx")
#pprint.pprint(list(resultList), width=40)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。