获取excel内容_Python操作Excel文件(一)- 获取Excel文件中的内容

Excel 相信大家都不陌生,就是通过表来对数据进行展示和处理。生活中有很多的职业需要每天面对非常多的 Excel 表, 进行数据的添加、修改和查找(还包括一些统计)等操作。但是绝大数非程序员根本不知道,咱们其实可以通过程序来让日常的这些大量重复的枯燥的却又不得不做的工作变得简单并且精准。接下来我会通过 python操作excel 一系列的博客来讲解怎么让python 中的 **openpyxl** 模块来帮咱们处理 Excel 表的工作。

1. Excel 文档

首先,让我们来看一些基本定义。一个 Excel 电子表格文档称为一个工作簿。一个 工作簿保存在扩展名为.xlsx 的文件中。每个工作簿可以包含多个表(也称为工作表)。用户当前查看的表(或关闭 Excel 前最后查看的表),称为活动表。 每个表都有一些列(地址是从 A 开始的字母)和一些行(地址是从 1 开始的数 字)。在特定行和列的方格称为单元格。每个单元格都包含一个数字或文本值。单元格形成的网格和数据构成了表。

获取excel内容_Python操作Excel文件(一)- 获取Excel文件中的内容_第1张图片

2. 安装 openpyxl 模块

Python 没有自带 openpyxl,所以必须安装。

pip install openpyxl

3. Excel 文档的基本操作

本章的例子将使用一个电子表格 example.xlsx,它保存在工程目录的 files 文件夹中。下图是 example.xlsx 文件内容截图,主要包含了默认的两个表:表1、表2

获取excel内容_Python操作Excel文件(一)- 获取Excel文件中的内容_第2张图片

3.1 用 openpyxl 模块打开 Excel 文档

在导入 openpyxl 模块后,就可以使用openpyxl.load_workbook()函数来打开指定的 excel 文件:

  • openpyxl.load_workbook(地址) - 打开现有的excel文件
  • openpyxl.Workbook() - 新建一个excel文件
import openpyxl
# openpyxl.load_workbook(需要打开的excel文件路径)
wb = openpyxl.load_workbook('files/example.xlsx')
print(type(wb))		# 结果: 

openpyxl.load_workbook()函数接受文件名,返回一个 workbook 数据类型的值。这 个 workbook 对象代表这个 Excel 文件,有点类似 File 对象代表一个打开的文本文件。

3.2 从工作簿中取得工作表

  • 工作簿对象.sheetnames - 获取当前工作簿中所有表的名字
  • 工作簿对象.active - 获取当前活动表对应的Worksheet对象
  • 工作簿对象[表名] - 根据表名获取指定表对象
  • 表对象.title - 获取表对象的表名
  • 表对象.max_row - 获取表中最多有多少行
  • 表对象.max_column - 获取表有多少列
import openpyxl

# 打开工作簿
wb = openpyxl.load_workbook('files/example.xlsx')

# 获取所有表的表名
sheets_names = wb.sheetnames
print(sheets_names)     # 结果: ['表1', '表2']

# 获取活动表对应的表对象(表对象就是Worksheet类的对象)
active_sheet = wb.active
print(active_sheet)     # 结果:

# 根据表名获取工作簿中指定的表
sheet2 = wb['表2']
print(sheet2)           # 结果:

# 根据表对象获取表的名字
sheet_name1 = active_sheet.title
sheet_name2 = sheet2.title
print(sheet_name1, sheet_name2)     # 结果:表1 表2

3.3 从表中取得单元格

获取到表以后,咱们可以通过表去获取表中的单元格:

  • 表对象['列号行号'] - 获取指定列的指定行对应的单元格对象(单元格对象是 Cell 类的对象,列号是从A开始,行号是从1开始)
  • 表对象.iter_rows() - 一行一行的取
  • 表对象.iter_cols() - 列表一列的取
  • 单元格对象.value - 获取单元格中的内容
  • 单元格对象.row - 获取行号(数字1开始)
  • 单元格对象.column - 获取列号(数字1开始)
  • 单元格对象.coordinate - 获取位置(包括行号和列号)
import openpyxl

# 打开excel文件
wb = openpyxl.load_workbook('files/example.xlsx')
# 获取活跃表对象
sheet = wb.active
# 获取单元格对应的 Cell 对象
a1 = sheet['A1']      # A1 表示A列中的第一行,这儿的列号采用的是从A开始的
print(a1)
# 获取单元格中的内容
content = a1.value
print(content)      # 结果是: Rank
# 获取单元格的行和列信息
row = a1.row
print('行:', row)      # 结果: 1
column = a1.column
print('列:', column)    # 结果: 1
coordinate = a1.coordinate
print(coordinate)       # 结果:A1

用字母来指定列,这在程序中可能有点奇怪,特别是在 Z 列之后,列开始使用两个字母:AA、AB、AC 等。作为替代,在调用表的 cell()方法时,可以传入整数 作为 row 和 column 关键字参数,也可以得到一个单元格。第一行或第一列的整数 是 1,不是 0。

  • 表对象.cell(行号, 列号) - 获取指定行指定列对应的单元格(这儿的行号和列好号都可以用数字)
# 获取第二列的所有内容
row_num = sheet.max_row     # 获取当前表中最大的行数
for row in range(1, row_num+1):
    cell = sheet.cell(row, 2)
    print(cell.value)
'''
结果:
Language
Python
Java
C
C++
R
JavaScript
C#
Matlab
Swift
Go
'''

3.4 从表中取得行和列

咱们的表对象可以想列表或者字符串那样进行切片操作,来获取电子表格中一行、一列或一个矩形区域中的所有 Cell 对象。具体的用法如下:

  • 表对象[位置1:位置2] - 获取指定范围中的所有的单元格
import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string

# 打开excel文件
wb = openpyxl.load_workbook('files/example.xlsx')

# 获取表
sheet = wb.active

# 1.获取整个一行的单元格
max_column = sheet.max_column       # 获取最大列数
column = get_column_letter(max_column)      # 获取最大列数对应的字母列号
# 获取第一行所有单元格对象
row2 = sheet['A1':'%s1' % column]    # ((, , ),)

for row_cells in row2:
    for cell in row_cells:
        print(cell.coordinate, cell.value)

获取excel内容_Python操作Excel文件(一)- 获取Excel文件中的内容_第3张图片
# 获取整个列的单元格
max_row = sheet.max_row
columnB = sheet['A1':'A%d' % max_row]
# 获取B列对应的所有单元格对象
for column_cells in columnB:
    for cell in column_cells:
        print(cell.coordinate, cell.value)

获取excel内容_Python操作Excel文件(一)- 获取Excel文件中的内容_第4张图片
# 获取矩形区域中的单元格对象
cell_tuples = sheet['A1': 'C3']
for cells in cell_tuples:
    for cell in cells:
        print(cell.coordinate, cell.value)

获取excel内容_Python操作Excel文件(一)- 获取Excel文件中的内容_第5张图片

你可能感兴趣的:(获取excel内容)