Python如何使用xlrd和xlwt库读写excel文件

 更新时间:2024年02月10日 09:44:03   作者:AllardZhao  
这篇文章主要介绍了Python如何使用xlrd和xlwt库读写excel文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

如何读写excel文件?

实际案例

Microsoft Excel是日常办公中使用最频繁的软件,其数据格式为xls,xlsx,一种非常常用的电子表格。

小学某班成绩,记录在excel文件中:

    姓名    语文    数学    外语
    李雷    95      99     96	
    韩梅    98      100    93
    张峰    94      95     95
    .... ....

利用python读写excel,添加"总分"列,计算每人总分。

解决方案

使用pip3安装:$ pip3 install xlrd xlwt

使用第三方库xlrd和xlwt,这两个库分别用于excel读reader(rd)和写writer(wt) 。

注意:

[1] xlrd 2.1.0最新版本是不支持xlsx文件,可以创建xls文件复制之前内容粘贴,或者卸载现在版本然后重新安装xlrd==1.1.0。

[2] excel文件格式类型为"Microsoft Excel 97-2003 文件(*.xls)"

代码演示

(1)excel文件的读xlrd和xlwt写使用

import xlrd
 
# 读取excel,返回一个对象
book = xlrd.open_workbook('demo.xls')
# 获取一个book当中所有的表,返回一个列表其中每一个项是sheet对象
print(book.sheets()[0])
# 还可以通过sheet_by_name或sheet_by_name得到表
sheet = book.sheet_by_index(0)
print(sheet)
# 获取一张表行数和列数
r_num = sheet.nrows
c_num = sheet.ncols
print(r_num, c_num)
'''
一个book可以包含许多的表(sheet),一张表是由一个个单元格构成,
一个单元格也就是一个cell。
'''
# 如果获取每一个cell(单元格)的对象,需要传入行列坐标
print(sheet.cell(0, 0))
print(sheet.cell(1, 1))
# 单元格中内容的类型,它是一个枚举值,可以通过xlrd.XL_CELL_[类型]查看枚举值对应类型
print(sheet.cell(0, 0).ctype)
print(sheet.cell(1, 1).ctype)
# 获取cell对象的值
print(sheet.cell(0, 0).value)
print(sheet.cell(1, 1).value)
 
# 一次性获取一行数据或一列数据,传入行号或列号
r1 = sheet.row(1)
# 返回一个列表,其中每一个都是cell对象
print(r1)
# 不想获取cell对象,只想获取其中值
print(sheet.row_values(1))
# 还可以类似于切片操作指定某一个列的范围
# 第1个参数为行号,第2个参数为起始列
print(sheet.row_values(1, 1))
 
# 为表添加单元格,参数:行值、列值、类型、内容、字体的对齐方式
# sheet.put_cell()
 
# 写excel
import xlwt
 
# 创建excel,实例化一个workbook
w_book = xlwt.Workbook()
# 添加表
w_sheet = w_book.add_sheet('sheet1')
# 为表添加单元格
w_sheet.write(0, 0)
 
# 写入到文件中,输出文件的文件名
w_book.save('output.xls')

(2)实现excel文本的处理和保存

import xlrd, xlwt
 
# 打开excel
r_book = xlrd.open_workbook('demo.xls')
# 得到第一张表
r_sheet = r_book.sheet_by_index(0)
# 获得表的列数
nc = r_sheet.ncols
# 向表中添加cell单元格,传入:行号,列号,类型
r_sheet.put_cell(0, nc, xlrd.XL_CELL_TEXT, '总分', None)
# 迭代每一行计算总分
for row in range(1, r_sheet.nrows):
    # 跳过第1列,得到之后每个单元格内容列表求和
    t = sum(r_sheet.row_values(row, 1))
    # 添加一个cell单元格,存放每个学生的总分
    r_sheet.put_cell(row, nc, xlrd.XL_CELL_NUMBER, t, None)
 
# 写入到excel文件中
w_book = xlwt.Workbook()
w_sheet = w_book.add_sheet(r_sheet.name)
# 设置对齐方式,水平和垂直都居中
style = xlwt.easyxf('align: vertical center, horizontal center')
# 将r_sheet单元格内容写到w_sheet当中
for r in range(r_sheet.nrows):
    for c in range(r_sheet.ncols):
        w_sheet.write(r, c, r_sheet.cell_value(r, c), style)
 
# 保存内容
w_book.save('output.xls')

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python中的列表及其操作方法

    Python中的列表及其操作方法

    这篇文章主要介绍了Python中的列表及其操作方法,涉及到的方法包括对列表元素进行修改、添加、删除、排序以及求列表长度等,此外还介绍了列表的遍历、数值列表、切片和元组的一些操作,下文详细介绍需要的小伙伴可以参考一下
    2022-03-03
  • 解决Python发送Http请求时,中文乱码的问题

    解决Python发送Http请求时,中文乱码的问题

    这篇文章主要介绍了解决Python发送Http请求时,中文乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python 图片文字识别的实现之PaddleOCR

    Python 图片文字识别的实现之PaddleOCR

    OCR方向的工程师,之前一定听说过PaddleOCR这个项目,其主要推荐的PP-OCR算法更是被国内外企业开发者广泛应用,短短半年时间,累计Star数量已超过15k,频频登上Github Trending和Paperswithcode 日榜月榜第一
    2021-11-11
  • python opencv实现目标外接图形

    python opencv实现目标外接图形

    这篇文章主要为大家详细介绍了python opencv实现目标外接图形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Python爬虫动态IP代理使用及防止被封的方法

    Python爬虫动态IP代理使用及防止被封的方法

    在进行网络爬虫时,经常会遇到网站的反爬机制,其中之一就是通过IP封禁来限制爬虫的访问,为了规避这种限制,使用动态IP代理是一种有效的方法,本文将介绍在Python爬虫中如何使用动态IP代理,以及一些防止被封的方法,文中有详细的代码讲解,需要的朋友可以参考下
    2023-11-11
  • Django 权限管理(permissions)与用户组(group)详解

    Django 权限管理(permissions)与用户组(group)详解

    这篇文章主要介绍了Django 权限管理(permissions)与用户组(group)详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python Pandas中的shift()函数实现数据完美平移应用场景探究

    Python Pandas中的shift()函数实现数据完美平移应用场景探究

    shift() 是 Pandas 中一个常用的数据处理函数,它用于对数据进行移动或偏移操作,常用于时间序列数据或需要计算前后差值的情况,本文将详细介绍 shift() 函数的用法,包括语法、参数、示例以及常见应用场景
    2024-01-01
  • 如何计算 tensorflow 和 pytorch 模型的浮点运算数

    如何计算 tensorflow 和 pytorch 模型的浮点运算数

    FLOPs 是 floating point operations 的缩写,指浮点运算数,可以用来衡量模型/算法的计算复杂度。本文主要讨论如何在 tensorflow 1.x, tensorflow 2.x 以及 pytorch 中利用相关工具计算对应模型的 FLOPs,需要的朋友可以参考下
    2022-11-11
  • Django框架视图函数设计示例

    Django框架视图函数设计示例

    这篇文章主要介绍了Django框架视图函数设计,结合实例形式分析了Django框架视图函数处理流程、原理与相关操作注意事项,需要的朋友可以参考下
    2019-07-07
  • Python基于SMTP协议实现发送邮件功能详解

    Python基于SMTP协议实现发送邮件功能详解

    这篇文章主要介绍了Python基于SMTP协议实现发送邮件功能,结合实例形式分析了Python使用SMTP协议实现邮件发送的相关操作技巧,并总结分析了Python发送纯文本邮件、邮件附件、图片邮件等相关操作技巧,需要的朋友可以参考下
    2018-08-08

最新评论