目前接触到的 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入门&进阶学习资源包》免费分享