首页 > 其他分享 >合并Excel文件

合并Excel文件

时间:2024-03-05 16:00:11浏览次数:28  
标签:文件 sheet Excel XXX 合并 excel file input path

合并Excel文件

需求:

  • 把多个Excel文件合并到一个Excel文件的不同表格中。且需要合并的文件前后缀一致。
  • 对合并完成的文件中每张表指定列找出最大值标红

XXX表示需要自己填写的内容

import os
import pandas as pd 
from openpyxl import load_workbook
from openpyxl.styles import Font


def merge_excel_files_0(input_folder_path, output_file_path):
    
    excel_files = [file for file in os.listdir(input_folder_path) if file.startswith('XXX') and file.endswith('.xlsx')]

    # 创建一个空的DataFrame用于存储合并后的数据
    merged_data = pd.DataFrame()

    # 循环读取每个excel文件,并将数据合并到merged_data中
    for file in excel_files:
        file_path = os.path.join(input_folder_path, file)
        df = pd.read_excel(file_path)
        merged_data = pd.concat([merged_data, df], ignore_index=True)

    # 将合并后的数据保存到新的excel文件中
    merged_data.to_excel(output_file_path, sheet_name='hp_all', index=False)

def call_0():
    # 指定 输入文件夹路径 和 输出文件
    input_folder_path = "XXX"
    output_file_path = "XXX"

    merge_excel_files_0(input_folder_path, output_file_path)


def merge_excel_files(input_file_path, output_file_path, sheet_name, start_with_str):
    # ####
    # 将多张表格合并,且有规律的命名
    # 需要提前新建一个有内容的表格作为输入(即call_0())
    # ####

    file_list = os.listdir(input_file_path)

    with pd.ExcelWriter(output_file_path, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer: 
        merge_data = pd.DataFrame()

        for file_name in file_list:
            if file_name.startswith(start_with_str) and file_name.endswith('.xlsx'):
                file_path = os.path.join(input_file_path, file_name)
                print(file_path)
                df = pd.read_excel(file_path)
                merge_data = pd.concat([merge_data, df], ignore_index=True)
                
        merge_data.to_excel(writer, sheet_name=sheet_name, index=False)
    

def call1():
    root_dir = 'XXX'
    input_dirs = ['XXX', 'XXX', 'XXX', 'XXX']
    output_file_path = 'XXX'
    start_with_strs = [['XXX','XXX'], 
                       ['XXX', 'XXX'], 
                       ['XXX','XXX']]
    for start_with_str,sheet in start_with_strs:
        for input_dir in input_dirs:
            input_file_path = os.path.join(root_dir, input_dir, 'result')
            print(input_file_path)
            sheet_name = input_dir + '_' +sheet
            merge_excel_files(input_file_path, output_file_path, sheet_name, start_with_str)


def highlight_max_value(input_file_path, columns_to_highlight):
    # ####
    # 对于输入的excel文件中每张表找出指定的若干列中最大值并标红
    # ####

    wb = load_workbook(input_file_path)
    
    # 遍历每个表
    for sheet_name in wb.sheetnames:
        sheet = wb[sheet_name]
        
        # 遍历指定的列
        for column in columns_to_highlight:
            max_value = float('-inf')  # 初始最大值设为负无穷,原数据可能存在空值
            max_cell = None
            
            # 找到列中的最大值及其单元格
            for row in range(2, sheet.max_row + 1):  # 从第二行开始遍历,跳过标题行
                cell_value = sheet[f'{column}{row}'].value
                if cell_value is not None and cell_value > max_value:
                    max_value = cell_value
                    max_cell = sheet[f'{column}{row}']
            
            # 将最大值的单元格标记为加粗和红色
            if max_cell is not None:
                max_cell.font = Font(color="FF0000", bold=True)

    wb.save(input_file_path)

def call_2():
    # 指定要处理的excel文件路径 和 要 加粗标红 的列
    input_file_path = "XXX"
    columns_to_highlight = ['XXX', 'XXX']  
    highlight_max_value(input_file_path, columns_to_highlight)


if __name__ == '__main__':
    call_2()

标签:文件,sheet,Excel,XXX,合并,excel,file,input,path
From: https://www.cnblogs.com/benbenlzw/p/18054240

相关文章

  • 2 字节码文件的组成
    2字节码文件的组成基础信息魔数(文件的类型)、字节码文件对应的java版本号访问标识(public、final等)、父类和接口常量池保存了字符串常量、类和接口名、字段名,主要保存在字节码指令中使用常量池避免相同的内容重复定义,节约空间。例如:Stringstr1="Iloveyou";String......
  • 在PowerShell中下载文件是一项常见的任务,可以通过多种方法完成。下面我将介绍使用Invo
    在PowerShell中下载文件是一项常见的任务,可以通过多种方法完成。下面我将介绍使用Invoke-WebRequest、New-Object和Start-BitsTransfer命令来下载文件的方法。使用Invoke-WebRequestInvoke-WebRequest是一个非常强大的命令,用于向网页发送HTTP和HTTPS请求。你可以使用它来下载文......
  • 使用Npoi简单生成Excel并赋值导出小案例
    publicasyncTask<byte[]>ExportNewReportByQuotationId(GuidquotationId){IWorkbookwookbook=newXSSFWorkbook();//EngineerQuoteSheetawaitDoEngineerQuoteWork(wookbook,quotationId);//ILSheetawa......
  • 代码随想录算法训练营第三十六天 | 56. 合并区间,763.划分字母区间,435. 无重叠区间
    435.无重叠区间 已解答中等 相关标签相关企业 给定一个区间的集合 intervals ,其中 intervals[i]=[starti,endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 示例1:输入:intervals=[[1,2],[2,3],[3,4],[1,3]]输出:1解......
  • go-ini配置文件操作
    go-ini是golangini文件操作库,也兼容其他格式,包括但不限于my.cnf、.gitconfig使用三方库"gopkg.in/ini.v1"ini文件格式语法;注释使用分号;ini文件语法env=test;[]分区符[mysql]Host=127.0.0.1Port=3306User=rootPassword=123456D......
  • 从零开始写 Docker(四)---使用 pivotRoot 切换 rootfs 实现文件系统隔离
    change-rootfs-by-pivot-root.png本文为从零开始写Docker系列第四篇,在mydockerrun基础上使用pivotRoot系统调用切换rootfs实现容器和宿主机之间的文件系统隔离。完整代码见:https://github.com/lixd/mydocker欢迎Star推荐阅读以下文章对docker基本实现有一个大......
  • 提示空间快满,使用 rm 删除了很大的无用文件后,df 仍然看到空间不足,为什么?如何解决?
    一、问题描述删除之后df-Th并没有发生改变 二、分析原因:如果程序正在被使用,删除文件后,空间不会释放,原因可能是rm的文件正在被使用,所以不能删除,有以下两种方法1、使用lsof查看是否正在被使用,如果进程不重要,可以kill杀死进程#lsof|grepdelete|greptest2#kill-98......
  • Js下载返回是二进制保存到本地文件
    //创建一个新的XMLHttpRequest对象varxhr=newXMLHttpRequest();//监听XMLHttpRequest对象的加载完成事件xhr.addEventListener('load',function(){//如果请求成功完成if(xhr.status===200){//获取到二进制文件内容varblob=......
  • 如何合并两个PDF
      不用安装其它合并工具,wpsoffice本身自带的PDF工具中就有PDF合并工具,且稳定好用。新建pdf, 选择PDf工具中的合并PDF即可,合并后将不需要的页面删除。 ......
  • etc/sudoers没有这个文件
    问题:root@debian:#ls-l/etc/sudoersls:cannotaccess'/etc/sudoers':Nosuchfileordirectory解决:当系统中不存在/etc/sudoers文件时,通常表示sudo配置文件丢失或损坏。sudoers文件包含了sudo命令的配置信息,用于定义哪些用户或组有权限以超级用户模式执行命令。......