目标:将从NC系统导出的表格进行转置。
原工作簿:(每个工作表的行数需相等)
目标工作簿:
步骤①:将单个工作簿内的所有工作表内容合并(简单横向合并);
步骤②:将合并后的工作簿内容进行转置;
步骤③:将对单个工作簿的代码推广为文件夹内所有工作簿。
代码如下:
import xlrd
import pandas as pd
from pandas import DataFrame
from openpyxl import load_workbook
#不要格式
import pandas.io.formats.excel
pd.io.formats.excel.ExcelFormatter.header_style = None
#忽略警告级别的提示
import warnings
warnings.filterwarnings('ignore')
from pathlib import Path
folder_path = Path(r'D:\2306TB')
file_list = folder_path.glob('*.xls*') # 获取文件夹下所有工作簿的文件路径
for j in file_list: # 遍历已获取的文件路径
excel_name = j #选取工作簿
wb = xlrd.open_workbook(excel_name) #打开工作簿
sheets = wb.sheet_names() #获取工作簿下的所有工作表名称
alldata = DataFrame()#空表
for i in range(len(sheets)):
df = pd.read_excel(excel_name, sheet_name=i)
alldata = pd.concat([alldata,df],axis=1) #合并各工作表,concat()括号内哪个在前合并时哪个在前
alldata=alldata.T #数据转置
#将结果写入源文件,并不覆盖源文件内容
writer = pd.ExcelWriter(excel_name,engine='openpyxl',mode='a')#ExcelWriter的参数mode='a',模式改为新增,非写入('w')
book = load_workbook(excel_name)
alldata.to_excel(excel_writer=writer,sheet_name="转置",header=False)
writer.close()
book = load_workbook(excel_name)
book.move_sheet("转置",-len(sheets))
book.save(excel_name)
book.close()