Python处理Excel表格:Openpyxl使用教程
阅读(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
发表回复