本节内容:

1、xlrd模块读取excel
2、pandas模块读取excel

一、xlrd模块读取excel

步骤:
1、获取表格对象
2、通过表格对象获取行和列的内容

1、打开文件和获取表格对象

wb = xlrd.open_workbook(filename=file)  # 打开文件
wb.sheet_names()  # 获取所有表格名字

# 获取单个表格,可通过索引或者sheet名
sheet1 = wb.sheet_by_index(0)   # 通过索引获取表格
sheet2 = wb.sheet_by_name('成绩表')  # 通过名字获取表格

2、获取行和列

通过上面的sheet对象来进一步获取行和列
# 获取总行数(int)和总列数(int)
sheet2.nrows  # 获取到总行数
sheet3.ncols  # 获取到总列数

# 获取单行和单列的内容
sheet2.row_values(2)  # 获取第2行内容
sheet2.col_values(3)  # 获取第3列内容

3、获取单个表格里的内容(三种方式)

sheet2.cell(1,0).value  #  获取行1列0表格里的内容,
sheet2.cell_value(1,0)  # 同上
sheet2.row(1)[0].value  # 同上

1、读取到excel中单元格的内容返回的5种类型

ctype:
0  empty
1  string
2  number
3  date
4  boolean
5  error
import xlrd
from datetime import date,datetime

print(sheet1.cell(1,2).ctype)  # 获取单元格类型

# 获取时间单元格内容
date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1,2),wb.datemode)
print(date_value)   # <2019, 12, 12, 0, 0, 0>
print(date(*date_value[:3]))  # 2019-12-12
print(date(*date_value[:3]).strftime('%Y/%m/%d'))  # 2019/12/12

2、获取合并单元格的内容

获取之前,首先学一个命令,merged_cells()
使用后返回四个参数(row, row_range, col, col_range)
同样顾头不顾尾,[row, row_range)
fe:(1, 4, 6, 8)  即:第1行到第3行,第6列到第7列合并
根据低位索引即可获取到合并单元的内容,即sheet2.cell_value(1, 6)
# 获取合并单元格的行和列范围----顾头不顾尾
sheet2.merged_cells  # (1, 4, 6, 8)

# 根据行列的低位索引就可以获取到合并单元格
sheet2.cell_value(1,6)  # 行1列6

# 获取所有的合并单元格
merge = []
print(sheet2.merged_cells)
for (rlow,rhigh,clow,chigh) in sheet1.merged_cells:
    merge.append([rlow,clow])
for index in merge:
    print(sheet2.cell_value(index[0],index[1]))

二、pandas模块读取excel

Categories: py之excel

0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *