专业编程基础技术教程

网站首页 > 基础教程 正文

菜鸟excel办公自动化:百组数据去重、累加,仅用21行python代码

ccvgpt 2025-06-23 15:16:01 基础教程 1 ℃

在上一篇中,我采用了pandas的方法,我怕大家不好理解,我又做了个纯粹用openpyxl的

原始数据:

菜鸟excel办公自动化:百组数据去重、累加,仅用21行python代码

先对数据进行简单解析:

1、有三个不同工作簿的工作表;

2、用红色方框圈住的,代表着每个工作表不仅数据是无序的,而且存在重复;

3、用绿色方框圈住的,代表着三个表之间数据是没有直接规律的;

4、用蓝色方框圈住的,代表着三个表之间数据长度还是不一样的;

成果:

思路:

此次处理,先忽略每个表的“合计”列,分别对每个工作簿进行读取,对每一行的3、4、5月销量进行累加,然后利用python字典的特性实现去重(对于重复的产品,只累加销量,不重复罗列),最后输出结果至新表格。

代码分享:

为了使代码更有可阅读性,变量均使用中文,约等于中文编程

1、导入库,如果未安装的,输入pip install openpyxl安装

from openpyxl import load_workbook, Workbook

2、创建空字典、汇总需要处理的工作簿

销量汇总 = {}
所有文件 = ["李晓燕1号店.xlsx", "林佳2号店.xlsx", "张丹3号店.xlsx"]

3、通过遍历所有文件,实现挨个读取工作簿,在获得工作表后,对大致数据区域内容进行读取

for 文件 in 所有文件:
    工作簿 = load_workbook(文件)
    工作表 = 工作簿[工作簿.sheetnames[0]]

    for 行 in 工作表.iter_rows(2, 31, 1, 4):
        if 行[0].value is not None:
            临时变量1 = 销量汇总.get(行[0].value, None)
            临时变量2 = 行[1].value + 行[2].value + 行[3].value
            if 临时变量1 is None:
                销量汇总[行[0].value] = [行[1].value, 行[2].value, 行[3].value, 临时变量2]
            else:
                销量汇总[行[0].value] = [临时变量1[0] + 行[1].value, 临时变量1[1] + 行[2].value, 
                                        临时变量1[2] + 行[3].value, 临时变量1[3] + 临时变量2]
    工作簿.close()

工作表.iter_rows(2, 31, 1, 4):从第2行第1列开始,以行为单位读取,至第31行第4列结束

销量汇总.get(行[0].value, None):这就是所谓的利用字典特性,进行判断,如果字典里没这个水果产品,就返回None(空的意思),在if函数里进行判断,如果是空,添加一组数据,如果不是空,就进行累加

这是字典的格式

销量汇总[行[0].value] = [行[1].value, 行[2].value, 行[3].value, 临时变量2]:这级代表着将水果名为他的key,3、4、5月和累计销量以列表形式保存为他的value

工作簿.close():最外层每轮for循环,即代表着读取完一个工作簿,这个函数代表关闭工作簿的意思

4、输出保存

新建工作簿 = Workbook()
新建工作簿的工作表 = 新建工作簿.active

# 设置表头
新建工作簿的工作表.append(["水果名称", "3月销量", "4月销量", "5月销量", "总销量"])

# 写入数据
for 水果, 销量 in 销量汇总.items():
    row_data = [水果] + 销量
    新建工作簿的工作表.append(row_data)


新建工作簿.save("销量汇总.xlsx")

新建工作簿的工作表.append(["水果名称", "3月销量", "4月销量", "5月销量", "总销量"]):将会在工作表现有内容之后添加这几个内容,因为是新建的,所有从1行A列开始添加,这边作为表头使用

row_data = [水果] + 销量 \ 新建工作簿的工作表.append(row_data):将水果和销量合并成一个列表,继续往后添加

新建工作簿.save("销量汇总.xlsx"):保存工作簿至代码目录

代码是工具,思路才是核心。期待你用这些方法,解锁属于自己的高效办公方案!

欢迎骚扰,咱们下期见!

最近发表
标签列表