本文概述
- Python Openpyxl简介
- Openpyxl的工作流程
- 安装Openpyxl
- Openpyxl将数据写入单元格
- Openpyxl附加值
- Openpyxl从单元格读取数据
- Openpyxl读取多个单元格
- Openpyxl按行迭代
- Openpyxl按列迭代
- Openpyxl工作表
- Openpyxl过滤和排序数据
- Openpyxl合并单元格
- Openpyxl公式
- Openpyxl电池逆变器
- 将图表添加到Excel文件
- 新增图片
文章图片
在本教程中, 我们将学习以下主题:
- Openpyxl简介
- Openpyxl的工作流程
- Openpyxl安装
- Openpyxl将数据写入单元格
- Openpyxl读取Excel文件
- Openpyxl从单元格读取数据
- Openpyxl读取多个单元格
- Openpyxl工作表
- Openpyxl过滤和排序数据
- Openpyxl合并单元格
- Openpyxl附加值
- Openpyxl按列迭代
- Openpyxl按行迭代
- Openpyxl将图表添加到Excel文件
- Openpyxl添加图像
数据科学家经常使用Openpyxl执行不同的操作, 例如将数据复制到数据挖掘以及数据分析。
Openpyxl的工作流程 Openpyxl库用于写入或读取excel文件中的数据以及许多其他任务。我们用于操作的一个excel文件称为Workbook, 其中包含最少一张纸和最多几十张纸。
- 工作表由从1开始的行(水平系列)和从A开始的列(垂直系列)组成。
- 行和列共同构成一个网格, 并形成可以存储一些数据的单元格。数据可以是任何类型, 例如数字, 字符串。
- Openpyxl提供了从单个单元格读取数据或向其写入数据的灵活性。
pip install openpyxl
xlsx是XML电子表格文件的扩展名。 xlsx文件支持宏。让我们了解与excel文件相关的基本操作。考虑以下代码:
from openpyxl import Workbookimport timewb = Workbook()sheet = wb.activesheet['A1'] = 87sheet['A2'] = "Devansh"sheet['A3'] = 41.80sheet['A4'] = 10now = time.strftime("%x")sheet['A5'] = nowwb.save("sample_file.xlsx")
输出如下:
文章图片
在上面的代码中, 我们已经将数据写入了五个单元格A1, A2, A3, A4和A5。这些单元格由不同类型的值组成。我们已经从openpyxl模块导入了Workbook类。工作簿类是一个包含文档所有部分的容器。
在这里, 我们定义了一个新的工作簿。总是至少用工作簿制作一张纸。
wb = Workbook()
我们获得活动表的位置。
sheet['A1'] = 87sheet['A2'] = 'Devansh'
我们已经使用save()方法将所有数据保存到了sample_file.xlsx文件中。
Openpyxl将数据写入单元格 我们可以使用以下Python代码将数据添加到excel文件中。首先, 我们将从openpyxl模块导入load_workbook函数, 然后创建文件的对象并将文件路径作为参数传递。考虑以下代码:
from openpyxl import load_workbookwb = load_workbook(r'C:\Users\DEVANSH SHARMA\Desktop\demo.xlsx')sheet = wb.activesheet['A1'] = 'Devansh Sharma'sheet.cell(row=2, column=2).value = http://www.srcmini.com/5wb.save(r'C:\Users\DEVANSH SHARMA\Desktop\demo.xlsx')
输出如下:
文章图片
Openpyxl附加值 Openpyxl提供了append()方法, 该方法用于附加值组。我们可以附加任何类型的值。这些值附加在当前工作表的底部。考虑以下代码:
from openpyxl import Workbookwb = Workbook()sheet = wb.activedata = http://www.srcmini.com/((11, 48, 50), (81, 30, 82), (20, 51, 72), (21, 14, 60), (28, 41, 49), (74, 65, 53), ("Peter", 'Andrew', 45.63))for i in data:sheet.append(i)wb.save('appending_values.xlsx')
输出如下:
文章图片
Openpyxl从单元格读取数据 我们可以读取先前已写入单元格中的数据。有两种读取单元的方法, 首先, 我们可以通过单元名称来访问它, 其次, 我们可以通过cell()函数来访问它。例如, 我们正在从sample_file.xlrs文件读取数据。
import openpyxlwb = openpyxl.load_workbook('sample_file.xlsx')sheet = wb.activex1 = sheet['A1']x2 = sheet['A2']#using cell() functionx3 = sheet.cell(row=3, column=1)print("The first cell value:", x1.value)print("The second cell value:", x2.value)print("The third cell value:", x3.value)
输出如下:
The first cell value: 87The second cell value: DevanshThe third cell value: 41.8
Openpyxl读取多个单元格 我们可以从多个单元格中读取值。在以下示例中, 我们将marks.xlsx命名为excel文件, 并使用范围运算符读取文件的每个单元格。让我们看一下以下程序:
import openpyxlwb = openpyxl.load_workbook('marks.xlsx')sheet = wb.active#cells = sheet['A1', 'B7']# cells behave like range operatorfor i1, i2 in cells:print("{0:8} {1:8}".format(i1.value, i2.value))
输出如下:
Student_nameMarksTony Stark47Loki59Oddin73Nick Fury62Samaul75Peter Parkar80
Openpyxl按行迭代 openpyxl提供iter_row()函数, 该函数用于读取与行相对应的数据。考虑以下示例:
from openpyxl import Workbookwb = Workbook()sheet = wb.activerows = ((90, 46, 48, 44), (81, 30, 32, 16), (23, 95, 87, 27), (65, 12, 89, 53), (42, 81, 40, 44), (34, 51, 76, 42))for row in rows:sheet.append(row)for row in sheet.iter_rows(min_row=1, min_col=1, max_row=6, max_col=4):for cell in row:print(cell.value, end=" ")print()book.save('iter_rows.xlsx')
输出如下:
90 46 48 44 81 30 32 16 23 95 87 27 65 12 89 53 42 81 40 44 34 51 76 42
Openpyxl按列迭代 openpyxl提供了iter_col()方法, 该方法将工作表中的单元格作为列返回。考虑以下示例:
from openpyxl import Workbookbook = Workbook()sheet = book.activerows = ((90, 46, 48, 44), (81, 30, 32, 16), (23, 95, 87, 27), (65, 12, 89, 53), (42, 81, 40, 44), (34, 51, 76, 42))for row in rows:sheet.append(row)for row in sheet.iter_cols(min_row=1, min_col=1, max_row=6, max_col=3):for cell in row:print(cell.value, end=" ")print()book.save('iterbycols.xlsx')
输出如下:
90 81 23 65 42 34 46 30 95 12 81 51 48 32 87 89 40 76
Openpyxl工作表 众所周知, 每个工作簿可以有多个工作表。首先, 我们需要在一个工作簿中创建多个工作表, 然后才能使用Python访问这些excel工作表。在下面的示例中, 我们创建了一个包含三页的工作簿:
import openpyxlwb = openpyxl.load_workbook('dimension_1.xlsx')#Getting list of all sheet available in workbookprint(wb.get_sheet_names())# Returning objectactive_sheet = wb.activeprint(type(active_sheet))# Title of sheetsheet = wb.get_sheet_by_name("Monday")print(sheet.title)
输出如下:
['Sheet', 'Sunday', 'Monday', 'Tuesday', 'Wednesday']<
class 'openpyxl.worksheet.worksheet.Worksheet'>
Monday
它将如下图所示。
文章图片
Openpyxl过滤和排序数据 auto_filter属性用于设置过滤和排序条件。考虑以下代码:
from openpyxl import Workbookwb = Workbook()sheet = wb.activesheet['A3'] = 40sheet['B3'] = 26row_count = [(93, 45), (23, 54), (80, 43), (21, 12), (63, 29), (34, 15), (80, 68), (20, 41)]for row in row_count:sheet.append(row)print(sheet.dimensions)for a1, a2 in sheet[sheet.dimensions]:print(a1.value, a2.value)sheet.auto_filter.add_sort_condition('B2:B8')sheet.auto_filter.add_filter_column(1, ['40', '26'])wb.save('dimension_1.xlsx')
输出如下:
A3:B1140 2693 4523 5480 4321 1263 2934 1580 6820 41
Openpyxl合并单元格 我们可以使用merge_cells()方法合并单元格。当我们合并单元格时, 左上角的单元将从工作表中删除。 openpyxl还提供unmerged_cells()方法来取消合并单元格。考虑以下代码:
from openpyxl.styles import Alignmentwb = Workbook()sheet = wb.activesheet.merge_cells('A1:B2')cell = sheet.cell(row=1, column=1)cell.value = 'http://www.srcmini.com/Devansh Sharma'cell.alignment = Alignment(horizontal='center', vertical='center')wb.save('merging.xlsx')
输出如下:
文章图片
冻结窗格只是意味着在滚动到工作表的其他部分时冻结工作表的可见区域。这是有用的功能, 我们可以在屏幕上显示第一行或最左列。我们可以通过将单元名称传递给freeze_panes变量来实现。要取消冻结所有窗格, 请将freeze_panes设置为” 无” 。考虑以下代码:
from openpyxl import Workbookfrom openpyxl.styles import Alignmentwb = Workbook()sheet = wb.activesheet.freeze_panes = 'A1'wb.save('freez_cells.xlsx')
输出如下:
运行上面的代码并滚动工作表。
Openpyxl公式 我们可以将公式写入单元格中。这些公式用于在excel文件中执行操作。写入单元格后, 从工作簿中执行它。考虑以下示例:
from openpyxl import Workbookwb = Workbook()sheet = wb.activerows_count = ((14, 27), (22, 30), (42, 92), (51, 32), (16, 60), (63, 13))for i in rows_count:sheet.append(i)cell = sheet.cell(row=7, column=3)cell.value = "http://www.srcmini.com/=SUM(A1:B6)"cell.font = cell.font.copy(bold=True)wb.save('formulas_book.xlsx')
输出如下:
文章图片
Openpyxl电池逆变器 openpyxl单元反相器用于反转电子表格中单元的行和列。例如, 第3行的值将反转为5列, 第5行的值将反转为第3列(反之亦然)。你可以在以下图像中看到:
文章图片
文章图片
该程序是在嵌套的for循环的帮助下编写的。首先, 数据结构将x列和y行的单元格写入sheetData [x] [y], 然后将新创建的电子表格在y列和x行的单元格的spreadData [y] [x]中写入。
将图表添加到Excel文件 图表是表示数据的有效方法。使用图表, 它可以直观显示无法测试的数据。图表有多种类型:饼图, 折线图, 条形图等。我们可以使用openpyxl模块在电子表格上绘制图表。
为了在电子表格上构建任何图表, 我们需要定义图表类型, 例如BarChart, LineChart等。我们还导入引用, 该引用表示用于图表的数据。定义我们要在图表上表示的数据非常重要。让我们通过以下示例进行理解:
from openpyxl import Workbookfrom openpyxl.chart import BarChart, Referencewb = Workbook()sheet = wb.active# Let's create some sample student datarows = [["Serial_no", "Roll no", "Marks"], [1, "0090011", 75], [2, "0090012", 60], [3, "0090013", 43], [4, "0090014", 97], [5, "0090015", 63], [6, "0090016", 54], [7, "0090017", 86], ]for i in rows:sheet.append(i)chart = BarChart()values = Reference(worksheet=sheet, min_row=1, max_row=8, min_col=2, max_col=3)chart.add_data(values, titles_from_data=http://www.srcmini.com/True)sheet.add_chart(chart,"E2")wb.save("student_chart.xlsx")
输出如下:
文章图片
在上面的代码中, 我们创建了示例数据并绘制了与示例数据相对应的条形图。
现在, 我们将创建折线图。考虑以下代码:
import randomfrom openpyxl import Workbookfrom openpyxl.chart import LineChart, Referencewb = Workbook()spreadsheet = wb.active# Let's create some sample datarows = [["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], [1, ], [2, ], [3, ], ]for row in rows:spreadsheet.append(row)for row in spreadsheet.iter_rows(min_row=2, max_row=4, min_col=2, max_col=13):for cell in row:cell.value = http://www.srcmini.com/random.randrange(5, 100)chart = LineChart()data = Reference(worksheet=spreadsheet, min_row=2, max_row=4, min_col=1, max_col=13)chart.add_data(data, from_rows=True, titles_from_data=True)spreadsheet.add_chart(chart,"C6")wb.save("line_chart1.xlsx")
输出如下:
文章图片
在上面的代码中, 我们使用from_rows = True作为参数, 它表示图表是逐行而不是逐列。
新增图片 图像通常不在电子表格中使用, 但有时我们可以根据需要使用。我们可以将图像用于品牌宣传或使电子表格更具个性和吸引力。要将图像加载到电子表格, 我们需要通过以下命令安装一个名为枕头的附加模块。
pip install pillow
在以下程序中, 我们将图像导入excel文件。
from openpyxl import load_workbookfrom openpyxl.drawing.image import Image# Let's use the hello_world spreadsheet since it has less dataworkbook = load_workbook(filename="student_chart1.xlsx")sheet = workbook.activelogo = Image(r"C:\Users\DEVANSH SHARMA\Pictures\Screenshots\image.png")# A bit of resizing to not fill the whole spreadsheet with the logologo.height = 150logo.width = 150sheet.add_image(logo, "E2")workbook.save(filename="hello_world_logo1.xlsx")
【看这一篇就够了!Python Openpyxl完整开发实例分析】在本教程中, 我们介绍了openpyxl的所有基本概念和高级概念。
推荐阅读
- Puppet模块使用示例
- Puppet清单
- Puppet配置管理
- Puppet组件详解
- Puppet编码样式
- Puppet类用法示例
- 处理新SSH开发环境搭建扫描mapper文件的主要配置
- 搜狗地图下载|搜狗地图app下载
- .NET跨平台开发之Xamarin.Android介绍与生命周期