目标:将从NC系统导出的表格进行转置。
原工作簿:(每个工作表的行数需相等)
目标工作簿:
步骤①:将单个工作簿内的所有工作表内容合并(简单横向合并);
步骤②:将合并后的工作簿内容进行转置;
步骤③:将对单个工作簿的代码推广为文件夹内所有工作簿。
代码如下:
import xlrdimport pandas as pdfrom pandas import DataFramefrom openpyxl import load_workbook#不要格式import pandas.io.formats.excelpd.io.formats.excel.ExcelFormatter.header_style = None#忽略警告级别的提示import warningswarnings.filterwarnings('ignore')from pathlib import Pathfolder_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()