您当前的位置:首页 > 电脑办公 > excel
| PPT | 电脑打字 | 计算机基础 | word | excel | Linux教程 |

自学教程:python 对Excel 文档的基本操作

51自学网 2021-11-25 21:31:13
  excel
这篇教程python 对Excel 文档的基本操作写得很实用,希望能帮到您。

3. Excel 文档的基本操作

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

 

1a7bff3aa0f2b4dfdc465009646fe6c0.png

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))		# 结果: <class 'openpyxl.workbook.workbook.Workbook'>

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)     # 结果:<Worksheet "表1">

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

# 根据表对象获取表的名字
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]    # ((<Cell '表1'.A1>, <Cell '表1'.B1>, <Cell '表1'.C1>),)

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

 

f38a0e0dc04fd107de0da55203afe150.png
# 获取整个列的单元格
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)

 

45be8915f71fe585434d6e21e964663b.png
# 获取矩形区域中的单元格对象
cell_tuples = sheet['A1': 'C3']
for cells in cell_tuples:
    for cell in cells:
        print(cell.coordinate, cell.value)

 

f631d40b135be3954d68445ee440e7a4.png

Python批量处理csv文件转Excel--xlsx文件
csv逗号分隔符转换 python导入xlsx转为csv python提出csv中数据 如何将csv文件处理成rdf文件
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1