python自动化办公笔记(一)
Python操作xlrd
引用语法:
import xlrd as xr
- 获取工作簿
book=xr.open_workbook("./weather_expectation.xlsx")
- 通过工作簿获取工作表
book.nsheets#看有几个工作表
book.sheet_names()#查看表名
book.sheets()[[1]]#获取第二个工作表
book.sheet_by_index(1)#通过索引获取第二个工作表
book.sheet_by_name(“数据集1”)#通过工作表名获取工作表
book.sheet_loaded(“数据集1”)#判读工作表是否存在
book.sheet_loaded(“数据集1” or 1)
-读取行列数据
行数据
sheet_two=book.sheet_by_index(1)
sheet_two.nrows#获取工作表的有效总行数
sheet_two.row(6)[6:]#访问第7行中第7列以及后面的数据
sheet_two.row_slice(6,6)#同上
sheet_two.row_type(6,6)#返回值的类型
sheet_two.row_values(6)#返回第7行的数值
sheet_two.row_len(6)#看有多少个数字
sheet_two.col_values(6)
列数据
sheet_two.ncols#查看列数
sheet_two.col(2)[6:]#访问第7列中第7行以及后面的数据
sheet_two.col_slice(6,6)
sheet_two.col_type(6,6)
sheet_two.col_value(6,6)
-读取单元格数据
sheet_two.cell_value(2,2) #获取2,2坐标上的值
sheet_two.cell(2,2).value #同上
-读取合并后的单元格
#获取合并单元格的索引(开始行,结束行,开始列,结束列)。结束行何结束列取不到
sheet.merged_cells
补充:xr.xldate_as_tuple——把日期化为元组
//实例读取工作薄
#思路:先按行,再按列,对每个单元格的数值和类型进行判断,如果是数值型2,且为整数,那就取整处理,
如果是日期型,先转化为日期元组格式,再用strtime语法进行转化
list=[]
for i in range(1,sheet.nrows):
dict={}
for j in range(sheet.ncols):
C_type=sheet.cell_type(i,j)
C_value=sheet.cell_value(i,j)
if C_type==2 and C_type%1==0:
C_value=int(C_value)
if C_type==3:
year,month,day,hour,minute,second=xr.xldate_as_tuple(C_value,0)
date=datetime.datetime(year,month,day,hour,minute,second)
C_value=date.strftime("%Y%m%d %H:%M%S")
dict[keys[j]]=C_value
list.append(dict)
运行结果:
[{'姓名': '张三', '年龄': 22, '语言': 'Python', '考试时间': '20200317 00:0000'},
{'姓名': '李四', '年龄': 21, '语言': 'Python', '考试时间': '20200318 00:0000'},
{'姓名': '王五', '年龄': 20, '语言': 'Python', '考试时间': '20200317 00:0000'},
{'姓名': '刘六', '年龄': 18, '语言': 'Python', '考试时间': '20200318 00:0000'}]