合并多个Excel表,表中可含有多个Sheet
环境配置
- Windows控制台
- 输入 pip xlrd pip xlswriter
- 检查安装是否成功, 输入 pip list
代码实现
import xlrd # 读取Excel的包
import xlsxwriter # 写入的包
#打开一个Excel表
def open_xls(file):
try:
fh = xlrd.open_workbook(file)
return fh
except Exception as e:
print("打开出错,错误为:" + e)
#获取所有Sheet表
def getsheet(fh):
return fh.sheets()
#获取sheet表的行数
def getnrows(f, sheet):
table = f.sheets()[sheet]
return table.nrows
#读取文件内容并返回当前sheet行内容
def getFile(file, shnum):
fh = open_xls(file)
table = fh.sheets()[shnum]
num = table.nrows
for row in range(num):
rdata = table.row_values(row)
datavalue.append(rdata) # 存储所有行数据
return datavalue
#获取sheet表的个数
def getshnum(f):
x = 0
sh = getsheet(f)
for sheet in sh:
x += 1
return x
#函数入口
if __name__ == '__main__':
allxls = ['C:/Users/Echo/Desktop/Table1.xlsx', 'C:/Users/Echo/Desktop/Table2.xlsx',
'C:/Users/Echo/Desktop/Table3.xlsx'] # 文件的路径
datavalue = [] # 存储读取的结果
for fl in allxls:
f = open_xls(fl)
x = getshnum(f)
for shnum in range(x):
print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个sheet表的内容...")
rvalue = getFile(fl, shnum)
# 定义最终合并的新文件
endfile = 'C:/Users/Echo/Desktop/Table4.xlsx'
wb = xlsxwriter.Workbook(endfile)
# 创建一个sheet工作对象
ws = wb.add_worksheet()
for a in range(len(rvalue)):
for b in range(len(rvalue[a])):
c = rvalue[a][b]
ws.write(a, b, c)
wb.close()
执行结果存入新表Table4中。