2022 之Python操作 Excel,xlrd 与 xlwt 模块一文掌握

“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”

Python 操作 Excel

本篇博客为你介绍一种 Python 操作 Excel 的办法,核心用到 xlrd与xlwt模块。

  • xlrd 用于读 excel
  • xlwt 用于写 excel

模块安装比较简单

pip install  xlrd,xlwt
复制代码

正式开始前还需要了解一下 Excle 中的三大对象

  • WorkBook:工作簿对象
  • Sheet:表对象
  • Cell:单元格对象

这里 WorlBook 表示的是整个 Excel 文件, Sheet 表示的是 Excel 中的 Sheet, Cell 就是每个单元格。

常用单元格( Cell )中的数据类型

  1. empty(空的)
  2. string(text)
  3. number
  4. date
  5. boolean
  6. error
  7. blank(空白表格)

打开Excel文件读取数据

提前准备一个 Excel 表格,用作测试使用。

在这里插入图片描述

直接看代码即可

import xlrd
data = xlrd.open_workbook('测试表格.xlsx') # filename 表示文件名以及路径
print(data)
# 输出
# <xlrd.book.Book object at 0x00000272DE9276A0>
复制代码

注意最新版的 xlrd 模块已经不支持 xlsx 文件了,如果希望支持该文件格式,请使用如下版本 xlrd

pip uninstall xlrd  # 卸载当前版本

pip install xlrd==1.2.0 # 安装1.2.0版本
复制代码

获取 Excel 中的Sheet

import xlrd

data = xlrd.open_workbook('测试表格.xlsx')  # filename 表示文件名以及路径

table = data.sheets()[0]  # 通过索引顺序获取
print(table)
table = data.sheet_by_index(1) # 通过索引顺序获取
sheet_name = '测试1'
table = data.sheet_by_name(sheet_name) # 通过 Sheet 名称获取
print(table)
复制代码

以上方法返回的是 xlrd.sheet.Sheet() 对象。 如果不存在 Sheet ,或者名称写错,则出现如下 BUG

xlrd.biffh.XLRDError: No sheet named <'测试1'>
复制代码

调用工作簿对象的 sheet_names() 方法,可以返回工作簿的所有sheet页名字。

import xlrd

data = xlrd.open_workbook('测试表格.xlsx')  # filename 表示文件名以及路径
sheet_names = data.sheet_names()
print(sheet_names)
复制代码

使用该方法优先获取所有的 sheet_name ,可以防止调非法名称。

行的操作

import xlrd

data = xlrd.open_workbook('测试表格.xlsx')  # filename 表示文件名以及路径
table = data.sheet_by_index(0)

nrows = table.nrows  # 获取该sheet中的有效行数
print(nrows)
复制代码

获取第一行内容

import xlrd

data = xlrd.open_workbook('测试表格.xlsx')  # filename 表示文件名以及路径
sheet = data.sheet_by_index(0)

nrows = sheet.nrows  # 获取该sheet中的有效行数
row_data = sheet.row_values(0)  # 获取第1行的内容
print(row_data)
复制代码

获取所有行数据

import xlrd

data = xlrd.open_workbook('测试表格.xlsx')  # filename 表示文件名以及路径
sheet = data.sheet_by_index(0)

nrows = sheet.nrows  # 获取该sheet中的有效行数

for i in range(nrows):
    print(sheet.row_values(i)) # 获取第几行的数据
复制代码

返回由该列中所有的单元格对象组成的列表

import xlrd

data = xlrd.open_workbook('测试表格.xlsx')  # filename 表示文件名以及路径
sheet = data.sheet_by_index(0)
print(sheet.row_slice(0))
# 输出
# [text:'姓名', text:'班级', text:'年龄']
复制代码

其余内容参考代码查看即可

# 返回由该行中所有单元格的数据类型组成的列表
sheet .row_types(行索引, start_colx=0, end_colx=None)    
# 返回由该行中所有单元格的数据组成的列表
sheet .row_values(行索引, start_colx=0, end_colx=None)   
# 返回该列的有效单元格长度
sheet .row_len(行索引) 
复制代码

列的操作

获取有效列数

import xlrd

data = xlrd.open_workbook('测试表格.xlsx')  # filename 表示文件名以及路径
sheet = data.sheet_by_index(0)

ncols = sheet.ncols   #获取列表的有效列数
print(ncols)
复制代码

单元格操作

获取单元格内容 cell(rowx, colx) :获取sheet对象中第rowx行,第colx列的单元对象, 返回值的格式为 单元类型:单元值

import xlrd

data = xlrd.open_workbook('测试表格.xlsx')  # filename 表示文件名以及路径
sheet = data.sheet_by_index(0)
data = sheet.cell(2, 1)
print(data)
复制代码

获取单元格的值

data = sheet.cell_value(2, 1)
print(data)
复制代码

xlwt模块(操作 .xls 文件进行操作) 使用说明在注释直接查看即可。

import xlwt

xl = xlwt.Workbook(encoding='utf-8')
# 创建1个sheet对象,第2个参数是指单元格是否允许重设置,默认为False
sheet = xl.add_sheet('测试', cell_overwrite_ok=True)

# 第1个参数代表行,第2个参数是列,第3个参数是内容,第4个参数是格式
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '年纪')

xl.save('橡皮擦的测试.xls')
复制代码

设置单元格样式的基本用法


import xlwt

xl = xlwt.Workbook(encoding='utf-8')
# 创建1个sheet对象,第2个参数是指单元格是否允许重设置,默认为False
sheet = xl.add_sheet('测试', cell_overwrite_ok=False)

# 初始化样式
style = xlwt.XFStyle()
# 为样式创建字体
font = xlwt.Font()
font.name = 'Arial Black'
style.font = font
# 第1个参数代表行,第2个参数是列,第3个参数是内容,第4个参数是格式
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '年纪', style)

xl.save('橡皮擦的测试.xls')
复制代码

合并单元格

# 合并 第1行到第2行 的 第1列到第2列
sheet.write_merge(1, 2, 1, 2, '合并单元格')
复制代码

记录时间

2022年度 Flag,写作的 575 / 1024 篇。 可以关注我,点赞我、评论我、收藏我啦。

猜你喜欢

转载自juejin.im/post/7078101076833992711
今日推荐