0
点赞
收藏
分享

微信扫一扫

python—excel处理模块xlrd、xlwt、xlutils库的基本操作

北冥有一鲲 2022-01-20 阅读 83

Excel读取库xlrd

读取工作表

import xlrd # 导入xlrd库
wb = xlrd.open_workbook(r'excle.xlsx')	# 读取文件
all_ws1 = wb.sheets()	# 读取文件中所有表
all_ws2 = wb.sheet_names()	# 读取文件中所有表的名称

ws1 = wb.sheet_by_index(0)	# 用索引值读取工作表-方法1
ws2 = wb.sheets()[1]		# 用索引值读取工作表-方法2
ws3 = wb.sheet_by_name('Sheet1')	# 用名称读取工作表-方法3
ws4 = xlrd.open_workbook(r'excel.xlsx').sheet_by_name('Sheet1') # 直接通过文件读取工作表-方法4

方法1

通过索引来读取,索引值为0表示第一个表,读取后会将表中所有内容存到变量ws1中

方法2

也是通过索引进行读取,写法有所不同,先读取所有的表然后通过索引选中是第几个表,可以把wb.sheets()看成一个数组名

方法3

直接通过名称去读取,不用考虑顺序,默认表格的名称一般是Sheet1

方法4

就是把读取文件和表格写到一起了,看着相对有些乱

读取Excel行、列、单元格信息

import xlrd
wb = xlrd.open_workbook(r'excel.xlsx')
ws = wb.sheet_by_name('Sheet1')

row_count = ws.nrows	# 返回已使用行数
col_count = ws.ncols	# 返回已使用列数

row_obj = ws.row(1)		# 返回指定行已使用的单元格对象
row_val = ws.row_values(1)	# 返回指定行已使用的单元格的值

col_obj = ws.col(0)		# 返回指定列已使用的单元格对象
col_val = ws.col_values(0)	#返回指定列已使用的单元格的值

cell_obj = ws.cell(3,1)	# 返回指定单元格对象
cell_val = ws.cell_value(3,1)	# 返回指定单元格的值
变量
row_count4
col_count2
row_obj[text:‘Darkgreen’, number:98.0]
row_val[‘Darkgreen’, 98.0]
col_obj[text:‘姓名’, text:‘Darkgreen’, text:‘skyline’, text:‘花落的那一天’]
col_val[‘姓名’, ‘Darkgreen’, ‘skyline’, ‘花落的那一天’]
cell_objnumber:99.0
cell_val99.0

python中序号以0开始,比excel中的行号列号小1

Excel写入库xlwt

import xlwt
nwb = xlwt.Workbook('utf-8')	# 新建文件并读取
nws = nwb.add_sheet('成绩单')	# 新建工作表并读取
nws.write(0,0,'花落的那一天:100')	# 在指定位置写入值
nwb.save('成绩单.xls')	# 保存文件(xlwt库不能处理xlsx文件)

注:

xlrd与xlwt两个库之间的数据类型不能互通

xlrd的表格的对象类型为

<class ‘xlrd.sheet.Sheet’>

xlwt的表格的对象类型为

<class ‘xlwt.Worksheet.Worksheet’>

Excel修改库xlutils

import xlrd
from xlutils.copy import copy # 导入xlutils库copy模块下的copy函数

wb = xlrd.open_workbook('excel.xls')	# 读取文件
nwb = copy(wb)	# 复制文件

ws1 = nwb.get_sheet(0)	# 用索引号读取文件的第一个工作表
ws2 = nwb.get_sheet('Sheet1')	# 用名称读取文件的Sheet1表
ws3 = nwb.add_sheet('Sheet2')	# 在文件中新建工作表

ws3.write(0,0,'总计')	# 将数据写入单元格
ws3.write(0,1,'12000')	# 将数据写入单元格

nwb.save('excel.xls')	# 保存文件

from xlutils.copy import copy

表示导入xlutils库copy模块下的copy函数

如果使用import方式导入

应写为

import xlrd
import xlutils.copy

wb = xlrd.open_workbook('excel.xls')	# 读取文件
nwb = xlutils.copy.copy(wb)	# 复制文件

复制文件

将读取的wb文件复制给nwb文件,nwb文件此时与wb文件相同。

由于使用了xlutils库的copy函数,所以此时控制权已交给xlwt,也就是可以对nwb文件执行xlwt库的写入操作。虽然没有使用import xlwt方式导入,但是xlwt库必须存在,否则代码运行会出错。

读取工作表

ws1 = nwb.get_sheet(0)
ws2 = nwb.get_sheet('Sheet1')

可以通过索引值和名称两种方法读取表并赋值给对应变量,也可以直接对单元格对象进行写入操作

新建工作表

ws3 = nwb.add_sheet('Sheet2')

在当前文件下新建一个工作表,如果已经有这个表,将会报错

写入数据

ws3 = write(0,0,'总计')
ws3 = weite(0,1,12000)

在对应位置写入数据

保存文件

nwb.save('excel.xls')

如果与读取的文件名相同,则替换原来的文件。如果源文件未关闭,将会报错

其他

s3 = write(0,0,'总计')
ws3 = weite(0,1,12000)

在对应位置写入数据

保存文件

nwb.save('excel.xls')

如果与读取的文件名相同,则替换原来的文件。如果源文件未关闭,将会报错

其他

get_sheetadd_sheetwritesave都是xlwt库中的方法

举报

相关推荐

0 条评论