零基础使用Python读写处理Excel表格的方法
本文介绍如何使用Python的xlrd和xlwt库进行Excel文件的读写操作。内容涵盖Mac和Windows环境下的库安装步骤,以及如何通过代码读取Excel数据、创建新的Excel文件,并实现基于特定条件的数据筛选与保存。适合零基础用户学习如何利用Python自动化处理Excel表格,解放手工操作劳动力。
Python读写Excel入门指南
引言
面对大批量Excel数据处理任务,手工操作效率低下且易出错,编写简单的代码处理更为高效。经过对比,Python因其易用性和丰富的库支持,成为处理此类任务的理想选择。
环境配置与库安装
Python环境配置
配置开发环境是第一步。选择Python的一个主要优势在于macOS系统通常预装了Python环境,无需额外配置即可使用,这简化了准备工作。若使用Windows系统,则需手动配置Python环境。文中示例使用的Mac系统Python版本为2.7。
第三方库介绍
Python标准库不直接支持Excel操作,但其强大的生态系统提供了大量优秀的第三方库。本教程选用xlrd库进行Excel读取,使用xlwt库进行Excel写入,以完成基本的读写操作。
第三方库安装方法
安装第三方库非常简单。首先,需要从专门的Python库网站下载xlrd和xlwt的源码包。


对于新手而言,源码安装是最简单的方式,无需配置复杂的包管理器。直接下载这两个库的源码即可开始。
下载后的文件类型明确标注为源码。在macOS系统中解压下载的压缩包,会得到包含setup.py文件的文件夹。

注意,不要直接双击安装,因为.py是Python代码文件,双击仅会打开编辑器查看代码。正确做法是使用终端进入存放源码的文件夹。例如,若文件下载至“下载”目录,需执行以下命令进入该目录:
$ cd Downloads/ $ cd xlwt-1.1.2 $ sudo python setup.py install
上述命令中,cd用于进入指定文件夹,sudo表示使用管理员权限进行安装(否则可能提示权限不足)。回车后需输入电脑密码,输入完成后再次回车即可执行。python命令用于执行Python代码文件,install参数表示执行安装操作。
执行后终端会输出大量安装日志,最后显示“finished”即表示安装成功。
xlrd库的安装过程与xlwt完全相同,重复上述步骤即可。
Python读写Excel实战代码
编写代码
读写Excel的第三方库安装完毕后,即可开始编写处理代码。
在指定文件夹下创建名为hello.py的文件,并使用Sublime Text等代码编辑器打开。开始编写Python代码(注:Python中以#开头的行为注释)。
读取Excel文件
# -*- coding: utf-8 -*-
import xdrlib ,sys
import xlrd
#打开excel文件
def open_excel(file= 'test.xlsx'):
try:
data = xlrd.open_workbook(file)
return data
except Exception,e:
print str(e)
#根据名称获取Excel表格中的数据 参数:file:Excel文件路径 colnameindex:表头列名所在行的索引 ,by_name:Sheet1名称
def excel_table_byname(file= 'test.xlsx', colnameindex=0, by_name=u'Sheet1'):
data = open_excel(file) #打开excel文件
table = data.sheet_by_name(by_name) #根据sheet名字来获取excel中的sheet
nrows = table.nrows #行数
colnames = table.row_values(colnameindex) #某一行数据
list =[] #装读取结果的序列
for rownum in range(0, nrows): #遍历每一行的内容
row = table.row_values(rownum) #根据行号获取行
if row: #如果行存在
app = [] #一行的内容
for i in range(len(colnames)): #一列列地读取行的内容
app.append(row[i])
list.append(app) #装载数据
return list
#主函数
def main():
tables = excel_table_byname()
for row in tables:
print row
if __name__=="__main__":
main()
代码中包含大量注释,主要讲解关键点。首先设置utf-8编码,并务必导入xlrd模块以调用其读取Excel的函数。main()为主函数,Python程序将从此处开始执行,并调用其他函数读取数据。该代码实现了读取test.xlsx文件中Sheet1的数据,并逐行打印输出的功能。
Excel文件内容如下:

文件中包含两行数据。
运行代码需使用终端命令行。首先cd进入代码所在的文件夹,确保代码文件和Excel文件位于同一目录。然后执行python hello.py命令运行代码:

以上为Python读取并打印的内容。u前缀表示使用Unicode编码,输出结果与Excel文件中的内容一致。
创建Excel文件
使用xlwt库可以创建新的Excel文件,示例代码如下:
# -*- coding: utf-8 -*-
import xlwt
def testXlwt(file = 'new.xls'):
book = xlwt.Workbook() #创建一个Excel
sheet1 = book.add_sheet('hello') #在其中创建一个名为hello的sheet
sheet1.write(0,0,'cloudox') #往sheet里第一行第一列写一个数据
sheet1.write(1,0,'ox') #往sheet里第二行第一列写一个数据
book.save(file) #创建保存文件
#主函数
def main():
testXlwt()
if __name__=="__main__":
main()
该代码较为简单,同样需要在开头导入相应的库。
代码中创建了一个Excel工作簿,添加了一个名为hello的Sheet,写入两个数据项,最后按指定文件名保存文件。
按上述方法运行代码后,终端不会打印内容,但在文件夹中会生成一个名为new.xls的新Excel文件。打开该文件可见:

数据已按预期写入,且Sheet名称为hello。
值得注意的是,xlwt库的说明文档中有一句话:
Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.6, 3.3+
这意味着该库仅能创建xls格式的文件,不支持现代的xlsx格式。若将文件名后缀改为xlsx,文件将无法打开。该库相对较老,使用时需注意格式限制。
Excel数据筛选与处理
处理Excel内容
单纯的读写只是基础,最终目标是处理Excel中的数据。
假设一个应用场景:筛选出Excel中第一列和第二列数据相同的行,并将这些行保存到一个新的Excel文件中。
处理流程如下:
1. 打开目标Excel文件并读取内容 2. 遍历每一行,筛选出第一列和第二列相等的行 3. 创建一个新的Excel文件 4. 将筛选出的内容写入新文件 5. 保存新Excel文件
具体实现代码如下:
# -*- coding: utf-8 -*-
import xdrlib ,sys
import xlrd
import xlwt
#打开excel文件
def open_excel(file= 'test.xlsx'):
try:
data = xlrd.open_workbook(file)
return data
except Exception,e:
print str(e)
#根据索引获取Excel表格中的数据 参数:file:Excel文件路径 colnameindex:表头列名所在行的索引 ,by_index:表的索引
def excel_table_byindex(file= 'test.xlsx',colnameindex=0,by_index=0):
data = open_excel(file) #打开excel文件
table = data.sheets()[by_index] #根据sheet序号来获取excel中的sheet
nrows = table.nrows #行数
ncols = table.ncols #列数
colnames = table.row_values(colnameindex) #某一行数据
list =[] #装读取结果的序列
for rownum in range(0,nrows): #遍历每一行的内容
row = table.row_values(rownum) #根据行号获取行
if row: #如果行存在
app = [] #一行的内容
for i in range(len(colnames)): #一列列地读取行的内容
app.append(row[i])
if app[0] == app[1] : #如果这一行的第一个和第二个数据相同才将其装载到最终的list中
list.append(app)
testXlwt('new.xls', list) #调用写函数,讲list内容写到一个新文件中
return list
#将list中的内容写入一个新的file文件
def testXlwt(file = 'new.xls', list = []):
book = xlwt.Workbook() #创建一个Excel
sheet1 = book.add_sheet('hello') #在其中创建一个名为hello的sheet
i = 0 #行序号
for app in list : #遍历list每一行
j = 0 #列序号
for x in app : #遍历该行中的每个内容(也就是每一列的)
sheet1.write(i, j, x) #在新sheet中的第i行第j列写入读取到的x值
j = j+1 #列号递增
i = i+1 #行号递增
# sheet1.write(0,0,'cloudox') #往sheet里第一行第一列写一个数据
# sheet1.write(1,0,'ox') #往sheet里第二行第一列写一个数据
book.save(file) #创建保存文件
#主函数
def main():
tables = excel_table_byindex()
for row in tables:
print row
if __name__=="__main__":
main()
代码开头需同时导入xlrd和xlwt两个库,因为既涉及读取也涉及写入操作。
代码逻辑与前述示例类似,但有所增强。读取时,判断第一列和第二列数据相同的行才加入列表。写入时,使用两个for循环遍历新Excel中的单元格,通过i和j变量记录行列位置。此外,获取Sheet时通过序号(此处为0)而非名称,与之前的示例不同。
待处理的Excel文件内容如下:

理论上筛选后应仅保留第一行数据。运行代码后生成新的Excel文件,内容如下:

输出结果与预期相符。
总结
本文仅展示了简单示例,两个库的功能远不止于此,可进行的处理也非常丰富。若需处理海量数据,还需考虑内存管理,采用分批处理策略。本文旨在为零基础用户提供入门指南,帮助其利用Python解放手工劳动力。更多高级用法需读者自行探索。
示例工程代码可下载:https://github.com/Cloudox/PYReadWriteExcelDemo
以上介绍了Python读写处理Excel表格的完整流程,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













