Python操作Excel:xlrd读取、xlwt写入与xlutils修改完整指南

今天早睡
今天早睡
发布时间:2026-10-13 | 2人浏览过
原创

本文详解Python中处理Excel文件的三大核心库:xlrd用于读取,xlwt用于写入,xlutils用于修改。通过具体代码示例,展示如何安装依赖、加载工作簿、按行列操作数据、处理日期类型及设置单元格样式,并提供完整的读写改流程与注意事项,帮助开发者高效实现Excel自动化操作。

本文主要介绍如何利用Python对Excel文件进行读取、写入和修改操作。

  • 使用xlrd库读取Excel文件内容。
  • 使用xlwt库向Excel文件写入数据。
  • 使用xlutils库对现有Excel文件进行修改。

接下来将分别介绍上述三种操作的具体实现方法。

首先需要确保已安装xlrd库,可通过命令行执行pip install xlrd进行安装。读取xls文件的基本流程包括:

加载目标文件,选择需要操作的工作表索引,然后按照先行后列的顺序读取单元格数据。

以下是读取Excel的通用示例代码。

import xlrd
filename = "test.xls"        #文件路径
wb = xlrd.open_workbook(filename)  #加载这个xls文件
sh = wb.sheet_by_index(0)      #选中第1个表格
rows = sh.nrows           #rows为该表格的行数
for i in range(1,rows):       #从第二行开始按行读取
  title = sh.cell(i,0).value   #取第i+1行,第1列的数据

根据实际需求定制功能,例如通过列名获取对应索引。

根据列名获取内容的函数
def get_col_index(name,workbook,sheet):
  for i in range(sheet.ncols):
    name2 = sheet.cell(0,i).value
    print(name2)
    if name2 == name:
      return i
  return -1
sheet.cell(1,get_col_index("创建时间")).value

进一步扩展读取功能,支持更多数据获取方式。

sh = wb.sheet_by_name(sheetname)  #通过表格名称选中表格
print(wb.sheet_names())       #打印该xls文件的所有表格名称
sh.row(i)              #获得第i+1行的所有数据组成的list
ncols = sh.ncols          #获得该表格的所有列数
sh.row_values(rowx, start_colx=0, end_colx=None)   #获取第rowx+1行的某几列的数据并组成的list
sh.col(colx, start_rowx=0, end_rowx=None) #获取第colx+1列的某几行的数据并组成的list
sh.cell(i,j).value         #获取第i+1行第j+1列的数据
sh.cell(i,j).ctype         #获取第i+1行第j+1列的数据类型

在读取过程中需特别注意日期类型数据的处理。

关于数据类型,补充说明:xlrd读取xls文件单元格时,其ctype属性共有五种类型,数字与类型的对应关系如下:

ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

当单元格值为date类型时,直接输出会显示为浮点数。此时需判断ctype是否为3,并进行相应转换处理。

from xlrd import xldate_as_tuple
cell = sh.cell(i,10).ctype
if cell.ctype == 3:
  date = datetime(*xldate_as_tuple(cell.value, 0))

使用xlwt库写入Excel文件。

首先需要确保已安装xlwt库,可通过命令行执行pip install xlwt进行安装。写入xls文件的基本流程包括:

加载或新建文件,选择或创建工作表,然后按照先行后列的顺序写入数据。

以下是写入Excel的通用示例代码。

import xlwt
file = xlwt.Workbook()   #新建个文件
sheet = file.add_sheet('test_sheet0',cell_overwrite_ok=True) #新建个表格,指定表名以及是否可覆盖写
sheet.write(i,j,value)   #在第i+1行和第j+1列写value(i、j从0开始)
file.save("test_xls.xls")  #保存成xls文件并指定文件名

xlwt支持更多高级写入功能。

#设置某列的宽度
sheet.col(0).width = 200
#写日期
style = xlwt.XFStyle()
style.num_format_str = 'D-MMM-YY' 
worksheet.write(0, 0, datetime.datetime.now(), style)
#写公式
sheet.write(1, 1, xlwt.Formula('SUM(A1,B1)'))
#合并单元格的写
sheet.write_merge(0, 0, 0, 3, 'First Merge')
#ps:
#write_merge(x, x + h, y, w + y, value, sytle) x和y表示当前行列,h和w为要合并的行数和列数

尝试添加样式,使表格更加美观。

在写入数据时,可以应用样式,例如设置字体、颜色或背景。

style = xlwt.XFStyle()
#修改字体:
font = xlwt.Font()       #为样式创建字体
font.name = 'Times New Roman'  #字体名称
font.bold = True        #黑体
font.colour_index = 2      #修改字的颜色
font.underline = True      #下划线
style.font = font        #使用到样式中
sheet.write(0,1,"编号",style)
#修改单元格背景色
pattern = xlwt.Pattern() 
pattern.pattern = xlwt.Pattern.SOLID_PATTERN 
pattern.pattern_fore_colour = 5 #色号,可以在源代码中看到色号和颜色的对应关系
style = xlwt.XFStyle()
style.pattern = pattern
sheet.write(0,2,"编号",style)

使用xlutils库修改Excel文件。

修改Excel文件的基本流程包括:

将xlrd加载的xls文件对象复制为xlwt对象,随后利用该xlwt对象对Excel进行修改操作。

以下是修改Excel的示例代码。

import xlrd 
import pymysql
from xlrd import open_workbook
from xlutils.copy import copy
import xlwt
file_name = "test_update.xls"
workbook = xlrd.open_workbook(file_name) 
sheet = wb.sheet_by_index(0)
workbook_update = copy(workbook) 
sheet_update = workbook_update.get_sheet(0)
sheet_update.write(i,j,value)
workbook_update.save(file_name)

总结以上内容。

以上就是本文的全部内容,希望这些示例能对您的学习或工作有所帮助。感谢支持,如需了解更多相关内容,请查看相关链接。

相关标签:

本站声明

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

Python 相关产品和应用

全部下载

专题列表