Python对文件夹内所有Excel工作簿完成先合并后转置

目标:将从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()

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来为您解答。 实现这个功能需要用到Python中的pandas库和openpyxl库。具体步骤如下: 1. 导入所需库 ```python import os import pandas as pd from openpyxl import Workbook ``` 2. 定义函数,用于获取文件夹下所有excel文件中sheet_name=“系数表”的内容,并将内容行列转置 ```python def get_excel_data(file_path): df_list = [] for file_name in os.listdir(file_path): if file_name.endswith('.xlsx'): file = os.path.join(file_path, file_name) excel_data = pd.read_excel(file, sheet_name='系数表') excel_data_T = excel_data.T df_list.append(excel_data_T) return pd.concat(df_list) ``` 3. 调用函数,将获取到的所有excel文件中sheet_name=“系数表”的内容全部合并 ```python df = get_excel_data('your_file_path') ``` 4. 创建一个Workbook对象,将合并后的内容写入Excel文件中 ```python wb = Workbook() ws = wb.active for r in dataframe_to_rows(df, index=True, header=True): ws.append(r) wb.save('output.xlsx') ``` 完整代码如下: ```python import os import pandas as pd from openpyxl import Workbook from openpyxl.utils.dataframe import dataframe_to_rows def get_excel_data(file_path): df_list = [] for file_name in os.listdir(file_path): if file_name.endswith('.xlsx'): file = os.path.join(file_path, file_name) excel_data = pd.read_excel(file, sheet_name='系数表') excel_data_T = excel_data.T df_list.append(excel_data_T) return pd.concat(df_list) df = get_excel_data('your_file_path') wb = Workbook() ws = wb.active for r in dataframe_to_rows(df, index=True, header=True): ws.append(r) wb.save('output.xlsx') ``` 将代码中的'your_file_path'替换成您需要处理的文件夹的路径,运行程序即可生成一个Excel文件,其中包含了所有excel文件中sheet_name=“系数表”的内容,并已经行列转置合并

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值