openpyxl------------多excel操作
测试数据
#########################多个excel表内容,合到一个excel表的sheet中
from openpyxl import load_workbook,Workbook
import os
def copy_data():
wb = Workbook()
sh = wb.active
all_data = []
for name in os.listdir('C:/Users/admin/Desktop/data'):
path = f'C:/Users/admin/Desktop/data/{name}'
tmp_wb = load_workbook(path)
tmp_sh = tmp_wb.active
for r in range(1,tmp_sh.max_row):
#获取整行数据
row_value = []
for c in range(1,tmp_sh.max_column):
value = tmp_sh.cell(r,c).value
row_value.append(value)
##获取整行数据,加到全局数据里
if row_value not in all_data: ##去重操作
all_data.append(row_value)
for data in all_data:
sh.append(data)
wb.save('C:/Users/admin/Desktop/合并的shuju.xlsx')
if __name__ == "__main__":
copy_data()
实现效果:
可以看出每张表中,少了一行,所以再改代码
for r in range(1,tmp_sh.max_row+1):
for c in range(1,tmp_sh.max_column+1):
实现效果:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
=================将多个工作簿的excel表格内容,添加到一个工作簿里面的多个工作表sheet中======================
from openpyxl import load_workbook,Workbook
import os
def copy_data():
wb = Workbook()
for name in os.listdir('C:/Users/admin/Desktop/data'):
path = f'C:/Users/admin/Desktop/data/{name}'
tmp_wb = load_workbook(path)
tmp_sh = tmp_wb.active
sh = wb.create_sheet(name)
for r in range(1,tmp_sh.max_row+1):
#获取整行数据
row_value = []
for c in range(1,tmp_sh.max_column+1):
value = tmp_sh.cell(r,c).value
row_value.append(value)
sh.append(row_value)
##删除多余的工作表sheet,如果不删除sheet,它会产生多余的工作表sheet
del wb['Sheet']
wb.save('C:/Users/admin/Desktop/合并的数据.xlsx')
if __name__ == "__main__":
copy_data()
实现效果:
经检查,数据与源数据相同!!
对sheet名称进行切片:
sh = wb.create_sheet(name[:-2])
sh = wb.create_sheet(name[:1])########sheet名称变成了一个字