零基础使用Python读写处理Excel表格的方法

季宁
季宁
发布时间:2026-10-14 | 5人浏览过
原创

本文介绍如何使用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表格的完整流程,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表