留作备用
结合别人的方法,直接可以使用
工作需要,合并多个excel内的多个sheet,并增加新的列
# coding = UTF-8
import os
import xlwt
from xlrd import open_workbook, xldate_as_datetime
def getdatafromtable(file_name):
table = open_workbook(file_name)
get_sheets = table.sheet_names() # 得到excel的全部sheet页的名称
infos = []
for i in get_sheets:
get_each_sheet = table.sheet_by_name(i) # 每个sheet名称
count_rows = get_each_sheet.nrows # 当前sheet总行数
for j in range(count_rows):
# 返回该行数据列表
col_values = get_each_sheet.row_values(j, start_colx=0, end_colx=None)
# 我自己额外加的处理,不需要直接注释
# try:
# if "2021" in col_values[0]:
# col_values[0] = col_values[0].replace(".", "/")
# except:
# pass
# try:
# 时间格式处理,读取excel后变为 数字.0 的处理
# col_values[0] = xldate_as_datetime(col_values[0], 0).strftime('20%y/%m/%d')
# except:
# pass
# # 插入新列,增加信息
# col_values.insert(0, get_each_sheet.name)
# col_values.insert(0, file_name.replace("需要替换的信息", ""))
# 多个表格的信息合并到一个list
infos.append(col_values)
return infos
# 写入新文件
def data_write(file_path, datas):
f = xlwt.Workbook()
sheet1 = f.add_sheet(u'汇总', cell_overwrite_ok=True) # 创建sheet
i = 0
for data in datas:
for j in range(len(data)):
sheet1.write(i, j, data[j])
i = i + 1
f.save(file_path) # 保存文件
# 遍历文件夹内的所有文件
for root, dirs, files in os.walk("文件夹路径"):
data = []
for file in files:
infos = getdatafromtable(root + file)
for info in infos:
data.append(info)
data_write("汇总.xlsx", data)