admin管理员组

文章数量:1538816

2024年5月22日发(作者:)

2019年第23期

信息与电脑

China Computer & Communication

软件开发与应用

基于Python的Excel文档处理程序的设计与实现

周延熙

(广东电网有限责任公司 汕头供电局,广东 汕头 515041)

摘 要:

从提高办公人员处理Excel数据的工作效率出发,笔者介绍了使用Python及第三方库pandas开发Excel

文档处理程序的方法。该程序实现了Excel文档的内容匹配、合并、拆分等功能,性能良好,运行效率高,并通过

tkinter库方便了用户使用程序的图形用户接口,降低了企业的人力资源成本,具有广泛的应用价值。

关键词:

Excel;文件拆分;Python

中图分类

号:TP391.13  文献标识码:A  文章编号:1003-9767(2019)23-085-03

Design and Implementation of Excel Processing Program

Based on Python

Zhou Yanxi

Abstract:

Starting from improving the working efficiency of office staff in processing Excel data, the author introduces the

(Shantou Power Supply Bureau, Guangdong Power Grid Corporation, Shantou Guangdong 515041, China)

method of developing Excel document processing program using Python and third-party library pandas. This program implements the

full use of the tkinter library can facilitate users to use the program

s graphical user interface, reduces the human resource cost of the

enterprise, and has a wide range of applications value.

Key words:

Excel; file splitting; Python

functions of content matching, merging, and splitting of Excel documents, with good performance and high operating efficiency,making

0 引言

Office电子表格软件Excel是日常办公的必备软件,企

业办公人员往往花费大量时间使用Excel处理数据,例如将

不同表格的对应内容进行匹配、合并多个表格,或者按照不

同项目拆分表格。人工方式对多个Excel表格进行复制、粘贴、

公式输入等操作不仅工作效率低,而且易出错。

从提高办公人员处理Excel数据的工作效率出发,笔者

设计开发了一款简单易用的Excel文档处理程序,可以帮助

办公人员便捷地完成Excel表格处理工作,大幅提高办公人

员处理Excel文档的效率,减少了办公人员的工作时间,降

低了人工操作出现的失误。

Python语言是一种面向对象、解释型的计算机程序语言,

语法简洁清晰,具有功能齐全的标准库和丰富的第三方模块

[1]

被越来越多独立、大型的项目用于软件开发。本文介绍使用

Python语言设计与实现一款适合办公人员使用的Excel文档

处理程序的方法。

1 设计原理与思路

1.1 技术原理

将Pyhon运用于Excel处理需通过安装第三方模块来

实现

[2]

。目前主要可实现Excel处理的模块有openpyxl、

xlutils、pandas等。openpyxl是能让Python程序读取和修改

Excel的模块,使用广泛,其优点是简单易用,支持xlsx文

件读写,但缺点是运算效率不高,当面对项目较多的文件时,

处理速度相对较慢。xlutils基于xlrd/xlwt的模块,其中xlrd

用于读取,xlwt用于将修改后的文档写入,是早期用于处理

Excel的Python模块,缺点是只支持Excel 2003以前版本的

xls文件。pandas是用于数据分析处理的Python模块,其特

点是具有强大的数据分析处理能力,处理速度优良,缺点是

不支持Excel的单元格格式保存。对比不同模块的特点后,

根据功能需求,本程序选择pandas作为处理Excel的Python

模块。

作者简介:

周延熙(1987—),男,广东汕头人,硕士研究生,工程师。研究方向:电力信息通信技术。

— 85 —

软件开发与应用

信息与电脑

China Computer & Communication

2019年第23期

在pandas里,DataFrame是最常用的数据结构。DataFrame

是一种分布式数据集。使用pandas处理Excel,通常将Excel

表格内容转化为DataFrame后再进行处理。

默认的Python程序通过命令行界面实现,为了使程序便

于办公人员使用,需要通过GUI工具开发图形用户接口。常

用的Python的GUI开发工具有tkinter、wxPython、PyQt等。

其中tkinter是Python标准库的GUI模块,跨平台、小巧轻便,

能满足日常的图形用户接口开发要求。

1.2 开发思路

根据日常办公需要的功能,首先利用Python开发文档匹

配、文档合并、文档拆分等功能处理模块,经过调试验证后,

再设计GUI图像界面,并将各个模块与图形界面绑定,设计

用户使用交互程序。最后将程序编译为可执行文件,发布不

同操作系统平台(32位Windows、64位Windows等)下使

用的版本,使程序支持不同电脑跨平台使用。

其中,dfs为数据结构Series,或者是Panel构成的序列。

axis为0时,数据根据行进行融合;axis为1时,数据根据

列进行融合。sort设置合并结果是否进行排序,选择False为

不进行排序。将需要合并的两个或多个文档存放在dfs中,

再利用pandas的concat函数可实现多文档合并功能模块。多

文档合并功能模块主要功能由以下程序实现:

Files_name = list(selected_Files)

for fn in Files_name:

(_Excel(fn))

#添加列表的所有文档内容到dfs

df = (dfs,sort=False) #文档合并

_Excel(file_save,index = False)

#将结果保存在Excel文档

2.1.3 文档拆分功能模块设计

文档拆分是文档合并的反向操作,通常是将文档某一列

内容相同的数据筛选出来,另存为一个文档。例如,将学生

档案根据不同的省份或者学院,将学生的数据拆分后存为不

同的文档,可以利用pandas中的选取数据方法实现。pandas

提供了df[ ]方法,可以通过行或者列设置筛选条件。

在筛选之前,首先要获取数据筛选所在列有多少项不重

复的内容,区域选取可以从行和列的维度对文档内容进行筛

选,通过[ ]、[ ]、[ ]3种方法实现。[ ]

使用行或列的内容名称进行索引;[ ]使用整数索引,

输入列或行所在的序号数字(第一列或第一行为0)进行数

据搜索;[ ]是[ ]和[ ]两种方法的结合。这

3种方法对文档内容进行筛选时,方括号内有两个参数,参

数一是对行的筛选条件,参数二是对列的筛选条件。文档拆

分功能模块主要功能由以下程序实现:

df = _Excel(filename)

col=[:,3] #获取第4列的内容

col_data=list(set(col)) #去除重复内容fname=filename.

split(‘.’)

for i in range(len(col_data)):

save_data= df[col == col_data[i]]

save__Excel(col_data[i]+’.xlsx’)

2.2 图形用户接口设计

通过设计图形用户接口(Graphical User Interface,

GUI),可以使普通用户无需通过复杂的计算机指令与程序

进行交互。tkinter是一个开源的图形接口开发工具

[4]

,属于

Python的内建模块,提供标签、按钮、菜单等图形接口。

2.2.1 文档处理功能按钮

使用tkinter的Button组件能实现对文档处理模块的调

用。Button组件用于在Python图形用户接口中添加按钮,

按钮上可以放置文本或图像,与函数关联,当按钮被用户点

击时,自动调用预先关联的函数。Button组件的设置属性有

text、command、width、height、place等。text用于设置按

2 程序设计过程

2.1 Excel处理功能模块设计

2.1.1 文档自动匹配功能模块设计

文件内容匹配是办公人员处理文档频繁使用的操作。

VLOOPUP是Excel中最常用的查找匹配函数,用于在两个

表格之间快速导入对应匹配的数据,使用方法是按某一列进

行查找,最终返回该列所查询内容匹配的值。pandas模块提

供了merge函数,可以将不同数据集依照某些字段(属性)

进行合并操作,得到一个新的数据集。pandas的merge函数

基本用法如下:

(left, right,how=’left’)

其中,pd为pandas的简写(下文相同),

所处理的数据为DataFrame结构。left为参与合并的左侧

DataFrame,right为参与合并的左侧DataFrame,how为合并

的方式,主要包括inner(内连接)、outer(外链接)、left

(左连接)、right(右连接)。根据设计需求,选择left方式。

文档自动匹配功能模块主要功能由以下程序实现:

first_Excel=ame(_Excel(File1)) #打开

第一个文档

second_Excel=ame(_Excel(File2)) #打

开第二个文档

result=(first_Excel,second_Excel,how=’left’)

#文档合并

2.1.2 多文档合并功能模块设计

将多个文档收集后汇总是在日常办公的常用操作,例如

行政人员收集各个部门的报名表,将多个报名表合并在一个

表格。pandas模块提供了concat函数,可以将两组或者多

组数据进行简单的合并。利用concat函数的特性,可以实现

Excel文档合并功能。pandas的concat函数基本用法如下:

(dfs, axis=0, sort=False)

[3]

— 86 —

2019年第23期

信息与电脑

China Computer & Communication

软件开发与应用

钮上的文字,command将按钮与函数关联,width、height、

place分别用于设置按钮的宽度、高度和位置。

btn = (root, text=’文档匹配’,width=

16,height=2,command=slot_vlookup).place(x=100, y=100,

anchor=’nw’)

2.2.2 文件选择框功能

图形用户接口实现文件选择、保存等功能,可以通

过tkinter中的文件对话框模块filedialog实现。filedialog

提供单选或多选目录中的文件、文件夹功能,以及在保存

文件的时候让用户输入文件名称的功能。函数filedialog.

askopenfilename可以获取文档名称,返回一个文档名称的字

符串。函数easfilename可指定保存的文档名

称,返回一个文档名称的字符串。

nfilename(title=’打开文档’,

filetypes=[(‘Excel 2007’, ‘*.xlsx’), (‘All Files’, ‘*’)])

easfilename(title=’保存文档为’,

filetypes=[(‘Excel 2007’, ‘*.xlsx’),(‘All Files’, ‘*’)])

件名。文档处理完成后,程序弹出提示框显示处理结果存放

位置,如图2所示。将经过多次测试得出的结果,进行两个

各有2 000行、15列的Excel文档数据匹配,匹配操作需要

5~8秒,数据处理需要2~3秒。而人工进行两个同类文

档数据匹配,全过程至少需要2~3分钟。

图2 文档处理完成提示框

Excel文档处理程序中的文档合并功能可选择两个或者

多个文档进行合并。而文档拆分功能设计了两种拆分方式:

一种是将Excel文档根据某一列内容拆分,结果保存在不同

的Excel文档中;另一种是将Excel文档根据某一列内容拆分,

结果保存在同一个Excel文档的多个Sheet工作表中。与文

档匹配功能相比,文档合并功能与文档拆分功能更能体现

Excel文档处理程序处理效率高的优势。测试结果表明,将

10个各有500行、15列数据的文档合并为一个文档仅需要

6秒左右,将一个有5 000行的数据按照某一列内容筛选拆

分为多个文档,也只需要7秒左右。而人工进行相同的工作量,

至少需要花费15分钟以上的时间。随着表格复杂度的增加,

虽然程序运算所需的时间会略微增长,但使用该Excel文档

处理程序将比人工处理方法节约更多时间,而且处理结果更

加准确。

3 实现过程

3.1 程序开发

程序开发环境安装的软件版本为32位的Python3.6.2,

使用pip安装了pandas、numpy、pyinstaller等第三方模块。

通过tkinter开发完成的程序界面如图1所示。4个按钮对应

了文档匹配、文档合并,以及两种文档拆分功能。

4 结 语

本文介绍了一种基于Python的Excel文档处理程序的

设计与实现过程,所设计的程序可以跨平台使用,提供友

好的图形用户接口,帮助用户便捷地完成Excel日常操作,

可以大幅提高各部门办公人员处理Excel表格的效率,适合

经常需要处理、分析大量数据的相关办公人员。本文介绍的

Excel文档处理程序能有效减少员工工作时间,并且降低人

工操作出现的失误,节约企业的人力资源成本,具有广泛的

图1 程序界面

Python开发的程序需要在已安装Python以及相关第三

方模块的计算机上运行。为了使程序能够在没有安装Python

的计算机上直接运行,需要通过第三方模块pyinstaller将开

发好的Python程序打包成一个可执行文件。经过pyinstaller

打包后的exe程序可以复制到其他32位或64位的计算机上

运行。

3.2 程序功能实现及其性能分析

当需要匹配两个文档时,点击文档匹配按钮,程序弹出

选择文件提示框,引导用户依次打开两个要匹配的文档,然

后弹出另存为提示框,让用户输入处理后需要数据保存的文

应用价值。

参考文献

[1]张孟研.基于Python的Excel文档合并系统的设计与

实现[J].福州电脑,2017(6):123-124.

[2]陈衍鹏.基于Python第三方库实现Excel读写[J].微

型电脑应用,2017(8):75-78.

[3]张俊红.对比Excel轻松学习Python数据分析[M].

北京:中国工信出版社,2019,5(4):158-166.

[4]洪锦魁.PythonGUI设计tkinter菜鸟编程[M].北京:

清华大学出版社,2019,8(1):64-70.

— 87 —

本文标签: 文档处理程序合并