Python处理Excel表格:Openpyxl使用教程
阅读(5842)
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原创或整理--转载请注明: https://www.dszhp.com/openpyxl.html
发表回复