Python处理Excel表格:Openpyxl使用教程

2023/06 17 11:06
阅读(2722)

openpyxl库是一个专门用于读写Excel文件的Python第三方库。你可以使用它来创建、修改Excel文件,也可以从文件中读取数据。openpyxl是一个可以读写 Excel 2010 xlsx/xlsm/xltx/xltm 的 Python 库,简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能。

1、安装openpyxl库

首先,你需要用pip或conda安装openpyxl库:

 
     pip install openpyxl    

或者

 
     conda install -c anaconda openpyxl   

2、Openpyxl读取/打开Excel文件

首先,你需要使用openpyxl.load_workbook()方法打开Excel文件:

 
     from openpyxl import load_workbook
     # 打开文件
     workbook = load_workbook(filename='example.xlsx') 

此处filename参数代表Excel文件的路径。

3、Openpyxl选择excel工作表

在openpyxl中,工作表和工作簿是不同的。所以,如果你要使用特定的工作表,你需要先选择一个工作簿,然后从中选择工作表。

 
 # 获取工作簿中的工作表
sheet = workbook.active

# 或者通过索引获取一个工作表
sheet = workbook['Sheet1']

4、Openpyxl读取excel表中单个数据

读取Excel文件中的单元格数据非常简单。你可以使用以下方式:

 
# 通过单元格名称获取数据
cell_value = sheet['A1'].value

# 通过行列号获取数据
cell_value = sheet.cell(row=1, column=1).value

5、Openpyxl向excel表中写入数据

 
# 写入数据
sheet['A1'] = 'Data1'
sheet.cell(row=1, column=2, value='Data2')

6、Openpyxl保存打开的excel文件

# 保存文件
workbook.save(filename='example.xlsx')

7、Openpyxl 创建新excel文件

首先,我们需要创建一个Workbook对象。这实际上就是我们的工作簿,然后我们可以像平常一样添加新工作表。

from openpyxl import Workbook

# 创建一个新的 Excel 文件
workbook = Workbook()

# 创建一个新的工作表
sheet = workbook.active

# 重命名工作表
sheet.title = "My Worksheet"

# 保存工作簿
workbook.save(filename="new_file.xlsx")

8、Openpyxl 附加值

# 将值附加到行的末尾
sheet.append([1, 2, 3, 4, 5])

# 将字典附加到行的末尾
data_dict = {'Name': 'John', 'Age': 30, 'City': 'New York'}
sheet.append(data_dict.values())

9、OpenPyXL 读取多个单元格

# 获取一系列单元格的值
cell_range = sheet['A1':'B2']
for row in cell_range:
    for cell in row:
        print(cell.value)

10、Openpyxl 按行迭代获取数据

# 迭代行
for row in sheet.iter_rows(min_row=1, max_col=3, max_row=2):
    for cell in row:
        print(cell.value)

11、Openpyxl 按列迭代获取数据

# 迭代列
for col in sheet.iter_cols(min_row=1, max_col=3, max_row=2):
    for cell in col:
        print(cell.value)

12、Openpyxl 筛选&排序数据

# 筛选 & 排序
for row in sheet.iter_rows(min_row=1, max_col=3, max_row=6, values_only=True):
    filter_row = filter(lambda x: x is not None, row)
    sorted_row = sorted(filter_row)
    print(sorted_row)

13、Openpyxl 获取excel表的行列范围

# 获取工作表的行数和列数
print(sheet.dimensions)

# 获取工作表的最大列数
print(sheet.max_column)

# 获取工作表的最大行数
print(sheet.max_row)

14、Openpyxl合并excel单元格

# 合并单元格
sheet.merge_cells('A1:D1')
sheet['A1'] = 'Merged Cells'

15、Openpyxl 冻结窗格

# 冻结窗格
sheet.freeze_panes = 'B2'

16、Openpyxl向excel中写入公式

# 添加带公式的单元格
sheet['A2'] = 10
sheet['A3'] = 20
sheet['A4'] = '=SUM(A2:A3)'

17、Openpyxl向excel中插入图片

from openpyxl.drawing.image import Image

# 添加图像
img = Image('logo.png')
sheet.add_image(img, 'B2')

18、Openpyxl在excel中生成图表

from openpyxl.chart import LineChart, Reference

# 生成图表
chart = LineChart()
data = Reference(worksheet=sheet, min_col=2, min_row=1, max_col=3, max_row=3)
chart.add_data(data)
sheet.add_chart(chart, "E2")

19、openpyxl重命名工作表

from openpyxl import load_workbook

# 打开工作簿
workbook = load_workbook('example.xlsx')

# 获取工作表
sheet = workbook.active

# 重命名工作表
sheet.title = 'New Name'

# 保存工作簿
workbook.save('example.xlsx')

20、openpyxl向表格中批量写入数据

from openpyxl import Workbook

#创建一个新的工作簿和工作表
workbook = Workbook()
sheet = workbook.active

#输出示例数据到列表
data = [
    ['名字', '年龄', '城市'],
    ['John', 30, 'New York'],
    ['Alice', 25, 'Paris'],
    ['Bob', 35, 'London'],
]

# 添加每一行
for row in data:
    sheet.append(row)

# 保存工作簿
workbook.save('example.xlsx')

21、openpyxl中切片器的用法

OpenPyXL 中的切片器(slicer)是一种可用于选择 Worksheet 对象中指定区域的快速方法。你可以使用它来获取一个矩形数据区域中的所有单元格,并对其进行操作,例如对单元格进行格式化或写入数据。

下面是一个示例,展示了如何使用切片器来选择一个工作表中的区域,并将其所有单元格设置为特定的背景颜色。

from openpyxl import load_workbook
from openpyxl.styles import PatternFill

# 打开工作簿
workbook = load_workbook('example.xlsx')

# 获取工作表
sheet = workbook.active

# 定义切片器
slicer = sheet['A1':'F10']

# 设置颜色,并对切片器中的每个单元格进行循环
red_fill = PatternFill(start_color = 'FFFF0000', end_color = 'FFFF0000', fill_type = 'solid')
for row in slicer:
    for cell in row:
        cell.fill = red_fill

# 保存工作簿
workbook.save('example_colored.xlsx')

在这个例子中,我们使用了切片器 slicer 来选择工作表中从 A1 到 F10 区域的单元格。我们然后定义了一个名为 red_fill 的颜色,将 Cell.fill 属性设为该颜色,最后使用循环逐个将 slicer 中的单元格背景颜色设置为 red_fill。最后,我们使用 workbook.save() 方法将工作簿保存到磁盘中。

22、openpyxl中复制粘贴的用法

复制单元格:要复制单元格,你需要使用源单元格的值,并将其粘贴到目标单元格。下面是一个简单的示例,展示了如何将工作表中 B2 单元格的值复制到 A2 单元格:

from openpyxl import load_workbook
from openpyxl.utils import column_index_from_string

# 打开工作簿
workbook = load_workbook('example.xlsx')

# 获取工作表
sheet = workbook.active

# 获取 B2 单元格的值
src = sheet.cell(row=2, column=2).value

# 将值复制到 A2 单元格
dest = sheet.cell(row=2, column=1)
dest.value = src

# 保存工作簿
workbook.save('example.xlsx')

复制区域:要复制一个区域,你需要遍历该区域中的每个单元格,并将它们的值复制到目标区域。下面是一个简单的示例,展示了如何将工作表中 A2:B5 区域中的值复制到 C2:D5 区域中:

from openpyxl import load_workbook
from copy import copy

# 打开工作簿
workbook = load_workbook('example.xlsx')

# 获取工作表
sheet = workbook.active

# 获取 B2 单元格的值并粘贴到 C2:D5 区域
src = sheet.cell(row=2, column=2)
for i in range(2, 6):
    for j in range(2, 4):
        dest = sheet.cell(row=i, column=j)
        dest.value = copy(src.value)

# 保存工作簿
workbook.save('example.xlsx')

23、openpyxl求某个数据区域的和

from openpyxl import load_workbook
from openpyxl.utils import range_boundaries

# 打开工作簿
workbook = load_workbook('example.xlsx')

# 获取工作表
sheet = workbook.active

# 计算 A1:B5 区域的和
range = sheet['A1:B5']
values = [cell.value for row in range for cell in row]
sum = sum(values)

print("Sum of A1:B5: {}".format(sum))

o郭二爷o原创或整理--转载请注明: http://www.dszhp.com/openpyxl.html

发表回复

欢迎回来 (打开)

(必填)