Python数据读取——excel文件的读取

Python数据读取——excel文件的读取

本文对excel的读取仅适用于后缀名字为xlsx的excel文件

1、包的导入

安装openpyxl包
可以使用pip安装,也可以在setting中安装

import openpyxl

2、获取工作簿对象

即获取对应的xlsx文件

# 获取工作簿对象
workbook = openpyxl.load_workbook("2015.xlsx")

3、获取工作簿中的工作表名字

工作表名字

# 获取工作簿中所有工作表名字
sheet_names = workbook.sheetnames
print(sheet_names)

输出为[‘Sheet1’]

4、获取工作表对象

并不是获取工作表中的数据

4.1 根据已知工作表名字获取

worksheet=workbook["Sheet1"]
print(worksheet)  #<Worksheet "Sheet1">

只适用于已知工作表名字的情况

4.2 根据3中获得的数据表名字数组进行获取

# 可以根据工作表的名字获得工作表对象
worksheet = workbook[sheet_names[0]]
print(worksheet) # 输出:<Worksheet "Sheet1">

4.3 根据索引方式获取工作表对象

# 通过索引方式获取表对象
worksheet=workbook.worksheets[0]
print(worksheet) # <Worksheet "Sheet1">

#也可以用如下方式
#获取当前活跃的worksheet,默认就是第一个worksheet
ws = workbook.active

5、获得工作表属性

得到工作表对象后,可以获取工作表的相应属性,包括“表名”、“行数”、“列数”

# 获取表名
name = worksheet.title
print(name) # 输出:Sheet1

# 获取该表相应的行数和列数
rows = worksheet.max_row
columns = worksheet.max_column
print(rows, columns)

6、按行或者按列读取表中数据

6.1 获取全部数据

需要使用到以下两个生成器:

sheet.rows,这是一个生成器,里面是每一行数据,每一行数据由一个元组类型包裹。

sheet.columns,同上,里面是每一列数据。

# 按行读取
for row in worksheet.rows:
    for cell in row:
        print(cell.value, end=" ")
    print()
# row 的格式是(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>)
# 所以还要进一层读取cell,cell 的格式为<Cell 'Sheet1'.A1>
# 所以还要读取cell的值
 
# 按列读取
for col in worksheet.columns:
    for cell in col:
        print(cell.value,end=" ")
    print()

6.2 获取特定行或者特定列的数据

sheet.rows是生成器类型,不能使用索引。所以将其转换为list之后再使用索引,例如用list(sheet.rows)[3]来获取第四行的tuple对象。

# 输出特定的行
for cell in list(worksheet.rows)[3]:  #获取第四行的数据
    print(cell.value,end=" ")
print()
#输出特定的列
for cell in list(worksheet.columns)[2]:  #获取第三列的数据
    print(cell.value,end=" ")
print()

已经转换成list类型,所以下标是从0开始

6.3 获取某一块的数据

6.3.1 第一种方式

将生成器转换成列表的形式,切片获得数据
注意下标是从0开始

# list(worksheet.rows)[0:3]获取的是从第0行开始的第2行的共三行数据,列同样
for rows in list(worksheet.rows)[0:3]:
    for cell in rows[0:3]:
        print(cell.value,end=" ")
    print()

6.3.2 第二种方式

第二种方式,通过range方式,行和列都是从1开始

# 这里获得的是从第1行到第3行,列只有第一列
for i in range(1, 4):
    for j in range(1, 2):
        print(worksheet.cell(row=i, column=j).value,end=" ")
    print()

7、获取某一单元格的数据

两种方式,一种是通过索引,一种是通过行号和列号

# 精确读取表格中的某一单元格
# 此处的行数和列数都是从1开始计数的
content_A1 = worksheet['A1'].value
print(content_A1)

content_A1 = worksheet.cell(row=1, column=1).value
# 等同于 content_A1=worksheet.cell(1,1).value
print(content_A1)
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页