使用Python将多个单独的Excel文件整合到一个Excel文件的不同工作表里

         最近需要将许多个单独的表格整合到一起,首先是格式转化,将xls转为xlsx文件

import win32com.client as win32
import os.path
import os


def xlsToxlsx(xls_path, xlsx_path):
    for root, dirs, files in os.walk(xls_path, topdown=False):
        for name in files:
            str = os.path.join(root, name)
            if str.split('.')[-1] == 'xls':
                print(str)
                print(name)
                fname = str  # 合成需要转换的路径与文件名
                fname_tmp = xlsx_path + '\\' + name + 'x'  # 合成准备存放转换好的路径与文件名
                print(fname_tmp)
                excel = win32.gencache.EnsureDispatch('Excel.Application')  # 调用win32模块
                wb = excel.Workbooks.Open(fname)  # 打开需要转换的文件
                wb.SaveAs(fname_tmp, FileFormat=51)  # 文件另存为xlsx扩展名的文件
                wb.Close()
                excel.Application.Quit()


xls_path = r"存放xls文件的路径"
xlsx_path = r"存放xlsx文件的路径"
xlsToxlsx(xls_path, xlsx_path)

        将文件格式转换成统一的格式后,开始创建新的表用来存放多个Excel表中的内容。但是这样直接复制会有格式问题,后面再解决。

import glob
import pandas as pd
#需要创建ExcelWriter对象,要不sheet会覆盖,只留最后一个
writer = pd.ExcelWriter(r'这里填写创建表的路径包括文件名,例如:D:\abc\整合表.xlsx')
flist=glob.glob(r"这里填写存放多个Excel文件的目录,例如:D:a\*.xlsx") 
#这里的‘*.xlsx’不用更改,只需在前面添加路径即可

for i in flist:
    df=pd.read_excel(i)
#提取文件名
    fname=i.split("\\")[-1]
    fname=fname.split(".")[0]
    # print(fname)
    df.to_excel(writer, sheet_name=fname)
writer.save()

到这里表格已经复制完成了,但是新创建的表格的首行首列会出现number等字样,不够规范

 为了删除首行首列的不规范格式,采用以下方式将其去除

import openpyxl

wb = openpyxl.load_workbook(r"这里填写刚刚整合好的文件,例如之前的:D:\a\整合表.xlsx")


workbook = xlrd.open_workbook(r"这里填写刚刚整合好的文件,例如之前的:D:\a\整合表.xlsx")
# 获取所有sheet的名字
names = workbook.sheet_names()
num = len(names)

for i in range(num):
    # 通过sheet索引获得sheet对象
    worksheet = workbook.sheet_by_index(i)
    '''对sheet对象进行操作'''
    name = worksheet.name  # 获取表的姓名

    nrows = worksheet.nrows  # 获取该表总行数
    # print(nrows)  

    ncols = worksheet.ncols  # 获取该表总列数
    # print(ncols)  
    sheet = wb[name]
    list = worksheet.row_values(0)
    temp=list[1]
    # print(temp)

    # 在第1列的位置删除1列
    sheet.delete_cols(1)

    # 在第1行的位置删除1行
    sheet.delete_rows(0)

    sheet['A1']=temp

    print(name+'表已整合到某某表中')
    ## 指定不同的文件名,可以另存为别的文件
    wb.save(r'这里填保存xlsx文件的路径,即最后整合表的路径和文件名,例如:D:\abc\新整合表.xlsx')

运行完后效果如下

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

柏崎_星奈

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值