Python学习——Excel读写模块(xlwt/xlrd)

xlwt/xlrd模块

读写Excel的扩展工具
xlwt模块 xls文件write库,只能写,可以实现指定表单、指定单元格的写入
xlrd模块 xls文件read库,只能读,可以实现指定表单、指定单元格的读取

1. xlwt模块

  • 创建/保存xls文件对象data:
data = xlwt.Workbook(encoding = 'ascii')	#encoding参数:
data.save('excelFile.xls')
  • 创建表格:即sheet页

worksheet = data.add_sheet('new_sheet')

  • 对sheet页的操作:
#指定单元格写入
worksheet.write(row_x, col_y, label = 'Value')

#单元格的合并写入
worksheet.write_merge(x, x + m, y, w + n, string, sytle)	#x行,y列,m表示跨行个数,n表示跨列个数,string表示合并后写入的单元格内容,style表示单元格样式(x/y/w/h均以0开始计算)
worksheet.write_merge(21,21,0,1,u'合计',set_style('Times New Roman',220,True))#即在22行合并第1,2列,合并后的单元格内容为"合计",并设置了style

2. xlrd模块

  • 创建xls文件对象data:
data = xlrd.open_workbook('excelFile.xls')
  • 对xls文件(表格)的操作:sheet页
#通过索引顺序获取sheet页
table = data.sheets()[0] 
table = data.sheet_by_index(0) 

#通过名称获取sheet页
sheet1= data.sheet_by_name(u'Sheet1')
  • sheet页的属性:row行、column列、value单元格的值
#获取整行/整列,返回数组
row_list=sheet1.row_values(i)
col_list=sheet1.col_values(i)
#获取行/列长度
row_len = table.nrows
col_len = table.ncols
#获取value,传入行/列索引
val = sheet1.cell(row_x, col_x).value
val = sheet1.row(0)[0].value
val = sheet1.col(1)[0].value
#修改value
sheet1.put_cell(row, col, ctype, value, xf) #xf扩展的格式化 

3. 单元格内容的五种类型

  • ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

要注意对特殊类型数据的读取处理:
1.时间类型的读取与转换

#通过单元格对象,调用ctype方法判断是否时间类型
if (sheet1.cell(row,col).ctype == 3):  
	#以data格式读取(返回元组)
  date_value = xlrd.xldate_as_tuple(sheet1.cell_value(rows,3),book.datemode)  
  	#以时间格式打印
  date_tmp = date(*date_value[:3]).strftime('%Y/%m/%d')  

#时间类型的转换
xlrd.xldate_as_tuple(sheet1.cell(0,0).value, 0)		#返回tuple
xlrd.xldate_as_datetime(sheet1.cell(0,0).value, 0)	#返回datetime对象
  1. 合并单元格的读取和写入
#读取:对于合并后单元格数组,普通的读取结果为合并后仅首个单元格有值,其余均为空;与原本便为#1. 在通过xlrd模块打开xls文件时,设置formatting_info参数设置为True(默认False)
#2. 通过sheet1对象,调用merged_cells方法,获取合并单元格数组
sheet1.merged_cells	#返回格式:[(row, row_range, col, col_range),  ...],如(1,3,4,5)第一行到第二行在第四列合并

#写入:传入需要合并的单元格与合并后写入内容,可指定格式
sheet.write_merge(x, x+m, y, y+n, string, style)	#合并x行到x+m行,y列到y+n列之间的单元格,以style格式填入string(行/列参数均从0开始)
.ctype 查看value类型
xlrd.xldate_as_tuple() 返回data格式数据
sheet1.merged_cells 合并单元格的读取:将formatting_info参数设置为True(默认False)

你可能感兴趣的:(Python,excel文件读取,xlwt模块,xlrd模块)