目前接触到的 python 中用来对 excel 操作的模块包括:xlrd 和 xlwt,前者用来对 excel 进行读操作,后者用来进行写操作,这里先来说一下 xlrd 模块

一、xlrd 模块的安装

打开cmd 窗口,输入 pip install xlrd 安装完成即可,需要注意:默认安装的是最新版的 xlrd ,但是最新版已经不支持 .xlsx 文件,因此需要使用以下命令卸载并安装1.2版本:

pip uninstall xlrd #卸载已安装版本pip install xlrd==1.2.0 #安装1.2.0版本

二、xlrd模块的使用

1.导入模块并打开 .xlsx 工作簿

import xlrdwb = xlrd.open_workbook(filename)#filename 是文件的路径名,如下workbook = xlrd.open_workbook(filename=r'C:\Users\Windows10\Desktop\xlsx文件.xlsx')#open_workbook 返回的是一个对象

在 windows 上文件路径名采用反斜杠,而反斜杠在 python 中具有转义的作用,所以在字符串前面加上 r 来表示原始字符串,使路径名不产生转义;此外,如果路径带中文,也是需要加上 r

其实也可以在调用 open_workbook 函数时将路径名用斜杠表示,此时不需要再加 r ,如下:

wb = xlrd.open_workbook('C:/Users/cheng/Desktop/test.xlsx')

2.获取需要操作的 sheet 表格

import xlrdwb = xlrd.open_workbook('C:/Users/cheng/Desktop/test.xlsx')#1.通过索引,获取第一个 sheet 表格sheet1 = wb.sheets()[0]#2.通过索引顺序获取sheet2 = wb.sheet_by_index(1)#3.通过 sheet 名称获取sheet3 = wb.sheet_by_name('SoC')## 以上三个函数都会返回一个 xlrd.sheet.Sheet() 的对象#4.获取 wb 中的所有 sheet 名称,并返回一个列表names = wb.sheet_names()print(names)#判断 wb 中是否存在某个 sheet,返回 bool值wb.sheet_loaded(sheet_name or index)#通过 sheet 名索引is_exist = wb.sheet_loaded('SoC')print(is_exist)#通过 sheet index 索引is_exist = wb.sheet_loaded(0)print(is_exist) 

上面的运行结果如下:

3. 行操作 和 列操作

行列通用操作:

#获取 sheet 中的有效行数 和 有效列数,注意后面不带 ()row = sheet3.nrowscol = sheet3.ncolsprint(row, col)#获取一行中有多少列数据,其实就是有效列数num = sheet3.row_len(2)print(num)#获取指定行或者列中的所有单元格的数据,并将这些数据作为一个列表返回table_list = sheet3.row_values(rowx=1, start_colx=1, end_colx=None)print(table_list)table_list = sheet3.row_values(1)print(table_list)# rowx 表示的是获取第几行的数据# start_colx 表示从第几列开始获取,end_colx 表示第几列结束获取,end_colx 为None 表示结束没有限制table_list = sheet3.col_values(colx=0, start_rowx=0, end_rowx=None)print(table_list)table_list = sheet3.col_values(2)print(table_list)# colx表示是获取第几列的数据# start_rowx表示从索引为多少开始,end_rowx表示从索引为多少结束,end_rowx为None表示结束没有限制#获取该行中所有单元格对象组成的列表,每个元素的格式为 类型:值value = sheet3.row(0)print(value)# 获取某一列中的所有单元格的值以及其类型,组成列表返回value = sheet3.col(1)print(value)# 以切片的形式获取某一行的单元格的值及其类型,第一个参数是行数,第二个和第三个参数是切片参数,表示获取的列序号,左闭右开value = sheet3.row_slice(1, 1, 3)print(value)# 以切片的形式获取某一列的单元格的值及其类型,第一个参数是列数,第二个和第三个参数是切片参数,表示获取的行序号,左闭右开value = sheet3.col_slice(1, 1, 3)print(value)# 获取某一行中的每一个单元格的类型value = sheet3.row_types(1)print(value)print(type(value))# 获取某一列中的每一个单元格的类型value = sheet3.col_types(1)print(value)print(type(value))

运行结果如下:

行特有操作:

# 获取sheet 的所有生成器,返回一个列表,列表中的每一个元素是由每一行单元格对象组成的列表row = sheet3.get_rows()for one in row:print(one)

运行结果如下:

4. 单元格操作

#获取单元中的值print(sheet3.cell(0, 0).value)print(sheet3.cell_value(0, 0))#获取单元格的数据类型print(sheet3.cell_type(0, 0))

运行结果如下:

这里需要补充

python读取excel中单元格的内容返回的有5种类型ctype:

  • 0 empty
  • 1 string(text)
  • 2 number
  • 3 date
  • 4 boolean
  • 5 error

即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作;

读者福利:如果大家看完文章对Python感兴趣,那这套python学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

如果有需要全套Python入门+进阶学习资源包,可以点击免费领取(如遇扫码问题,可以在评论区留言领取哦)~

CSDN大礼包:《python入门&进阶学习资源包》免费分享

朋友们如果需要可以微信扫描下方CSDN官方认证二维码 即可领取↓↓↓

Python学习大礼包

Python入门到精通背记手册

Python安装包

Python爬虫秘籍

Python数据分析全套资源

Python实现办公自动化全套教程

Python面试集锦和简历模板


Python副业兼职路线

资料领取

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码 即可领取↓↓↓

CSDN大礼包:《python入门&进阶学习资源包》免费分享