Python操作Excel:xlrd读取、xlwt写入与xlutils修改完整指南
本文详解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)
总结以上内容。
以上就是本文的全部内容,希望这些示例能对您的学习或工作有所帮助。感谢支持,如需了解更多相关内容,请查看相关链接。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









