多个excel文件合并为一个excel

这篇具有很好参考价值的文章主要介绍了多个excel文件合并为一个excel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python openpyxl库实现将同一目录下的excel文件合并为一个excel功能(包含格式,不含宏),运行程序后,输入要生成的excel文件名称即可文章来源地址https://www.toymoban.com/news/detail-589416.html

import os
import copy
import sys
import openpyxl
from openpyxl.utils import get_column_letter
import win32com.client as win32
#功能目标:将同目录下的多个excel合并到同一个excel中,sheet页以excel文件名称+sheet页名称来命名
#-----------------------------
#实现xls文件转化为xlsx文件
#函数名称:xls_to_xlsx(file)
#file  xls文件
#------------------------------------------------------------------------------------------
def xls_to_xlsx(file):
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    wb = excel.Workbooks.Open(file)
    wb.SaveAs(file + 'x', FileFormat=51)  # FileFormat = 51 is for .xlsx extension
    wb.Close()  # FileFormat = 56 is for .xls extension
    excel.Application.Quit()
#------------------------------------------------------------------------------------------
#实现不同excel文件的sheet页复制 全格式复制
#函数名称:sheet copy(source excel,target excel)
#source_excel 源excel文件 target_excel 目标excel文件
#将源exce1文件的各个sheet页原样复制到目标excel文件
#------------------------------------------------------------------------------------------
def sheet_copy(source_excel,target_excel):
    #判断源文件和目标文件是否为excel文件
    if((source_excel.split('.')[1]!='xls' and source_excel.split('.')[1]!='xlsx') or (target_excel.split('.')[1]!='xls' and target_excel.split('.')[1]!='xlsx')):
        print('文件类型错误,请输入excel文件类型')
        sys.exit()
    source_file_name = source_excel.split('.')[0]
    wb = openpyxl.load_workbook(source_excel)
    #判断目标文件是否存在,不存在创建
    if(os.path.isfile(target_excel) == False):
        wb2 = openpyxl.Workbook()
        wb2.save(target_excel)
    wb2 = openpyxl.load_workbook(target_excel)
    #获取源文件的sheet页名称 使用文件名+sheet页名作为目标excel文件的sheet页命名
    sheetnames = wb.sheetnames
    for sheetname in sheetnames:
        print(sheetname)
        sheet = wb[sheetname]
        sheet2 = wb2.create_sheet(source_file_name+'_'+sheetname)

        # tab颜色
        sheet2.sheet_properties.tabColor = sheet.sheet_properties.tabColor

        # 开始处理合并单元格形式为“(<CellRange A1:A4>,),替换掉(<CellRange 和 >,)' 找到合并单元格
        wm = list(sheet.merged_cells)
        if len(wm) > 0:
            for i in range(0, len(wm)):
                cell2 = str(wm[i]).replace('(<CellRange ', '').replace('>,)', '')
                sheet2.merge_cells(cell2)

        for i, row in enumerate(sheet.iter_rows()):
            sheet2.row_dimensions[i + 1].height = sheet.row_dimensions[i + 1].height
            for j, cell in enumerate(row):
                sheet2.column_dimensions[get_column_letter(j + 1)].width = sheet.column_dimensions[
                    get_column_letter(j + 1)].width
                sheet2.cell(row=i + 1, column=j + 1, value=cell.value)

                # 设置单元格格式
                source_cell = sheet.cell(i + 1, j + 1)
                target_cell = sheet2.cell(i + 1, j + 1)
                target_cell.fill = copy.copy(source_cell.fill)
                if source_cell.has_style:
                    target_cell._style = copy.copy(source_cell._style)
                    target_cell.font = copy.copy(source_cell.font)
                    target_cell.border = copy.copy(source_cell.border)
                    target_cell.fill = copy.copy(source_cell.fill)
                    target_cell.number_format = copy.copy(source_cell.number_format)
                    target_cell.protection = copy.copy(source_cell.protection)
                    target_cell.alignment = copy.copy(source_cell.alignment)
        if 'Sheet' in wb2.sheetnames:
            del wb2['Sheet']
        if(source_excel.split('.')[1]=='xls'):
            os.remove(source_excel+'x')
        wb2.save(target_excel)
        wb.close()
        wb2.close()

def main():
    path = os.getcwd()
    files = os.listdir(path)
    if(len(files)==0):
        sys.exit()
    excel_list = []
    for file in files:
        if(file.split('.')[1]=='xls'):
            xls_to_xlsx(os.path.join(path,file))
    files = os.listdir(path)
    for file in files:
        if (file.split('.')[1] == 'xlsx'):
            excel_list.append(file)
    print(excel_list)
    file_name = input("请输入最终生成的excel文件名称")
    oneexcel = openpyxl.Workbook()
    oneexcel.save(file_name+'.xlsx')

    for f in excel_list:
        sheet_copy(f,file_name+'.xlsx')

    for file in files:
        if(file.split('.')[1]=='xls'):
            os.remove(file+'x')

if __name__ == '__main__':
    main()

到了这里,关于多个excel文件合并为一个excel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多个excel的sheet合并到一个excel下

    目标:多个excel的sheet合并到一个excel下(不同sheet) 要求:原始数据不同excel中的sheet名不同

    2024年02月13日
    浏览(38)
  • 【Python】excel多个sheet数据合并实例

    因为,每天都会有的大量excel报表汇总处理任务,所以写了一个脚本来处理。 就是找出每一个excel中特定的sheet,把这些sheet的特定列读取出来合并到一个sheet中。 因为每一个sheet的数据都不太一样,所以稍微麻烦一点,下面使用openpyxl方式和pandas两种方式来处理。 使用openpyx

    2024年02月02日
    浏览(47)
  • lammps教程:多个dump文件合并为一个文件

    大家好,我是小马老师。 本文介绍多个dump文件合并为一个dump文件的方法。 在前面的文章中,介绍过python ovito可以把一个dump文件按帧拆分为多个dump文件。 同理,多个dump文件也可以合并为一个dump文件。 基本原理是先读入多个dump文件,然后再合并输出为一个单独的文件。

    2023年04月09日
    浏览(162)
  • 合并PDF(将多个pdf文件整合成一个pdf文件)

    推荐使用下面这个 免费在线 的PDF文件合并工具,简单且易操作。 合并PDF - 在线上免费合并PDF文件 (smallpdf.com) 还有其他功能,不过现在我尚未使用其他功能:  关于费用:  

    2024年02月04日
    浏览(36)
  • 如何在 Java 中将多个 PDF 文件合并为一个 PDF

    如果您正在开发涉及处理 PDF 文件的 Java 项目,则可能需要将多个 PDF 文件合并到一个文档中。在本文中,我们将演示如何使用 Java 编程语言来实现这一目标。我们将从以下两个方面向您展示如何将多个PDF文件合并为一个PDF: 将文件中的多个 PDF 合并为单个 PDF 将流中的多个

    2024年02月13日
    浏览(44)
  • python怎么将多个矩阵合并为一个多维矩阵

    在 Python 中,可以使用 NumPy 库来合并多个矩阵为一个多维矩阵。 NumPy 提供了一个名为 concatenate 的函数,可以将多个矩阵沿指定的轴合并为一个矩阵。例如,如果要将两个二维矩阵沿着垂直轴合并为一个三维矩阵,可以使用如下代码: 输出结果为: 另外,还可以使用 stack 函

    2024年02月11日
    浏览(36)
  • Python合并一个 Excel 里面的多张表

    刚需要将入职五个月的日报汇总, 但是每日都是在通一个excel里面新建副表写日报,现在已经积累了84张附表(每周4张,总共21周),手动复制粘贴每张表格是相当耗时的工作。在这个时候,我开始思考:有没有一种更快捷的方法来合并这些表格呢?于是,我想到了使用Python。

    2024年02月05日
    浏览(39)
  • 将多个单独的 Excel 文件合并成一个,并添加标题行

    要将多个单独的 Excel 文件合并成一个,并添加标题行,可以使用 Python 的 pandas 库。以下是一个示例代码,假设要合并的 Excel 文件都在同一个文件夹中: import os import pandas as pd # 指定文件夹路径 folder_path = \\\'path/to/folder\\\' # 获取文件夹中所有 Excel 文件名 excel_files = [f for f in os.l

    2024年02月13日
    浏览(38)
  • 【工程实践】python 合并多个csv文件

            处理数据时,有多个csv文件需要合并。有两个方法可以实现,第一个是可以通过python提供的pandas模块,借助 pd.concat()实现多个csv文件的合并。第二个是通过linux命令实现。 1-1 获得全部csv文件路径 1-2  查看数据 1-3 合并数据 2-1 合并数据         将所有的csv文件

    2024年02月11日
    浏览(75)
  • Python自动办公之合并多个PDF文件

    本文基于使用pycharm平台,使用glob库和PyPDF2库实现 首先将需要合并的文件放于一个文件中 如下图 addpdf文件夹为需要合并的文件位置 good.py为代码块  代码如下 代码并没有对输入内容进行限制,可能会出现很大问题,但是正常使用是可以的.

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包