情况
工作上常常会碰到有文件格式一模一样的excel文档合并成一个独立的,一般大家的全是手动式拷贝,excel少得话手动式实际操作下就可以了,假如许多,便是不便,今日就而言下到python中如何解决这个问题
在python中应用openpyxl控制模块合拼好几个excel文档
xlsxwriter不可以实际操作目前的excel! xlwt、wlrd只有读写能力xls文件,而不可以实际操作xlsx文档 因此 只有用openpyxl,只有实际操作xlsx,可是更便捷!
execel 合拼器!依据字段名合拼,且容许sheet不一样
不兼容xls!! 后边考虑到变换 全自动变换很有可能会有什么问题的
完成编码以下:
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def find_excel_list():
excel_list = []
try:
dir_path = 'input'
files = os.listdir(dir_path )
for file in files:
if '.xlsx' in file:
excel_list.append(dir_path '/' file)
except Exception,e:
pass
return excel_list
def gen_xls(excel_list):
from openpyxl import Workbook, load_workbook
from openpyxl.drawing.image import Image
if len(excel_list)<2:
return
data_dict = {}
for excel_file in excel_list:
new_wb = load_workbook(excel_file)
sheet_names = new_wb.get_sheet_names()
for sheet_name in sheet_names:
data_sheet = new_wb.get_sheet_by_name(sheet_name)
for row in data_sheet.iter_rows():
row_num = row[0].row
if row_num == 1: # 字段名标识
print row[0].value
sheet_name = row[0].value # 用第一个字段名取名,后边能够投射回来
if not sheet_name in data_dict:
data_dict[sheet_name]=[]
data_dict[sheet_name].append(row)
else:
data_dict[sheet_name].append(row)
wb = Workbook()
for sheet_name in data_dict:
# sheet = wb.get_sheet_by_name(u"归纳销售量")
sheet = wb.create_sheet(sheet_name)
for row in data_dict[sheet_name]:
sheet.append([cell.value for cell in row])
wb.save('result.xlsx') # 好像能够储存数次的
if __name__ == '__main__':
excel_list = find_excel_list()
gen_xls(excel_list)