excel 在线合并方法:摸鱼的不二选择!——九数云BI

标签: excel 在线合并 | 发布时间: 2024-10-28 20:06:55

excel 在线合并是一个非常强大的功能,可以帮助我们轻松提升工作效率!下面让九数云告诉我们具体步骤吧!

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图

Excel就是最接地气的免费的数据分析工具,下面来看看excel 在线合并怎么做吧!

excel 在线合并方法:需求

我们先来实现把多个sheet的数据合并到一个sheet中。下图是wps会员中给出的示例。

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图1

excel 在线合并方法:实现逻辑

  1. 打开指定的表格,为了不影响原始数据,新建一个sheet,把其它sheet的内容依次追加到新建的sheet中。
  2. 数据处理完后,保存表格

excel 在线合并方法:数据准备

下载地址:私信我下载吧!没法直接上传!

数据截图

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图2

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图3

excel 在线合并方法:界面设计

需要一个文本框显示文件路径,有一个浏览按钮可以选择文件,再就是 有一个执行处理的按钮,大体效果如下:

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图4

excel 在线合并方法:代码说明

我们使用openpyxl来进行表格的操作。因为它不是Python的标准库,所以我们需要安装一下。

pip install openpyxl

全部代码

import tkinter as tk
import os
from tkinter import filedialog
from tkinter import messagebox
from openpyxl import load_workbook

class SheetMerge:
    def __init__(self):
        # 创建主窗口
        root = tk.Tk()
        root.geometry(600x150+550+200)
        root.title("合并Excel多表")
        page = tk.Frame()
        page.pack()
        text = tk.StringVar()

        def select_file():
            filepath = filedialog.askopenfile()
            entry.delete(0, tk.END)  # 清除文本框中的内容
            entry.insert(0, filepath.name)  # 插入新的文本内容

        # 执行处理
        def executor():
            filepath = entry.get()
            # 加载已经存在的Excel文件
            workbook = load_workbook(filename=filepath)
            # 创建一个新的sheet,默认添加到最后
            sh = workbook.create_sheet("合并结果")
            sh_current_row = sh.max_row

            # 获取所有的工作表名称
            sheet_names = workbook.sheetnames
            for sheet_name in sheet_names:
                # 加载工作表
                if sheet_name == "合并结果":
                    pass
                else:
                    sheet = workbook[sheet_name]
                    # 判断当前是不是第一个处理的sheet,是第一个是取标题,不是第一个时,从第二行开始取值
                    is_first_sheet = sheet.title == sheet_names[0]

                    # 遍历每一行数据
                    for i in range(1,sheet.max_row+1):

                        for j in range(1,sheet.max_column+1):
                            if is_first_sheet == True:
                                sh.cell(sh_current_row,j).value = sheet.cell(i, j).value
                                # 进行数据处理,且是最后一列的处理后,目标sheet下移一行
                                if j == sheet.max_column:
                                    sh_current_row += 1

                            else:
                                if i != 1:
                                    sh.cell(sh_current_row,j).value = sheet.cell(i, j).value
                                    # 进行数据处理,且是最后一列的处理后,目标sheet下移一行
                                    if j == sheet.max_column:
                                        sh_current_row += 1

            # 当你完成操作后,如果需要保存对文件所做的更改,可以调用save()方法
            workbook.save(filepath)
            workbook.close()
            messagebox.showinfo(title=Excel合并多表, message=处理完成!)

        tk.Label(page, text=待处理文件:, font=(华文楷体, 15)).grid(row=4, column=1, pady=10, padx=10)
        entry = tk.Entry(page, textvariable=text, width=45)
        entry.grid(row=4, column=2, padx=10)
        tk.Button(page, text=浏览..., font=(华文楷体, 12), width=5, height=1, command=select_file).grid(
            row=4,
            column=3)

        tk.Button(page, text=执行处理, font=(华文楷体, 15), command=executor).grid(row=5, column=2)
        root.mainloop()

if __name__ == __main__:
    SheetMerge()

excel 在线合并方法:运行效果

启动

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图5

浏览要处理文件

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图6

开始处理,处理完成后,弹出完成提示框。

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图7

合并后的文件

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图8

excel 在线合并方法:打包成exe

打包的具体流程,可以看之前的文章。

将python打包成exe的方式

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图9

执行代码

 pyinstaller -F -w SheetMerge.py

在dist下面会生成一个exe文件

excel 在线合并方法:摸鱼的不二选择!——九数云BI插图10

双击即可运行,这样就可以直接运行。也可以送给需要的小伙伴了。运行效果和我们上面是一样的。

注意:openpyxl这个库是不支持xls文件的,只支持xlsx。

如果你想了解更多关于数据合并的方法,欢迎尝试九数云BI,它拥有多种合并方式,还支持高效处理大部分的常用场景,如批量数据合并(上下合并,左右合并);超级数据透视(分类汇总);行列转换,分列,高级图表可视化,仪表盘,筛选器等。



上一篇:
下一篇:
相关内容