Python酷库之旅-第三方库openpyxl(15)

目录

一、 openpyxl库的由来

1、背景

2、起源

3、发展

4、特点

4-1、支持.xlsx格式

4-2、读写Excel文件

4-3、操作单元格

4-4、创建和修改工作表

4-5、样式设置

4-6、图表和公式

4-7、支持数字和日期格式

二、openpyxl库的优缺点

1、优点

1-1、支持现代Excel格式

1-2、功能丰富

1-3、易于使用

1-4、与Excel兼容性

1-5、性能良好

1-6、社区支持

1-7、跨平台

2、缺点

2-1、不支持旧版格式

2-2、某些特性支持有限

2-3、内存占用

2-4、文档和示例可能不足

2-5.、依赖关系

2-6、学习曲线

三、openpyxl库的用途

1、读取Excel文件

2、写入Excel文件

3、修改Excel文件

4、自动化

5、与Excel交互

6、数据迁移和转换

7、创建模板化的报告

四、如何学好openpyxl库?

1、获取openpyxl库的属性和方法

2、获取xlwt库的帮助信息

3、实战案例

3-141、引用输入了文本的全部单元格

3-142、引用输入了逻辑值的全部单元格

3-143、引用输入了批注的全部单元格

3-144、引用没有输入任何数据和公式的空单元格

3-145、引用所有可见的单元格

3-146、引用输入了日期的单元格

3-147、引用含有相同计算公式的所有单元格

3-148、引用合并单元格区域

3-149、引用定义名称所指定的单元格区域

3-150、引用输入了任何内容的最后一行单元格

3-151、引用多个非连续单元格区域集合(类似Union方法)

3-152、引用多个非连续单元格区域集合(循环处理)

3-153、引用多个单元格区域的交叉区域

3-154、获取计算公式的所有引用单元格

3-155、获取计算公式中引用的其他工作表单元格

3-156、获取某个单元格的从属单元格

3-157、引用某个单元格所在的整个行

3-158、引用某个单元格所在的整个列

3-159、引用单元格区域所在的行范围

3-160、引用单元格区域所在的列范围

五、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

一、 openpyxl库的由来

        openpyxl库的由来可以总结为以下几点:

1、背景

        在openpyxl库诞生之前,Python中缺乏一个专门用于读取和编写Office Open XML格式(如Excel 2010及更高版本的.xlsx文件)的库。

2、起源

        openpyxl库的创建是为了解决上述提到的Python在处理Excel文件时的不足,它的开发受到了PHPExcel团队的启发,因为openpyxl最初是基于PHPExcel的。

3、发展

        随着时间的推移,openpyxl逐渐发展成为一个功能强大的Python库,专门用于处理Excel文件。它支持Excel 2010及更高版本的文件格式,并提供了丰富的API,用于读取、写入、修改Excel文件。

4、特点
4-1、支持.xlsx格式

        openpyxl主要用于处理Excel 2010及更新版本的.xlsx文件。

4-2、读写Excel文件

        使用openpyxl可以读取现有的Excel文件,获取数据,修改数据,并保存到新的文件中。

4-3、操作单元格

        openpyxl允许用户按行、列或具体的单元格进行数据的读取和写入。

4-4、创建和修改工作表

        用户可以创建新的工作表,复制和删除现有的工作表,设置工作表的属性等。

4-5、样式设置

        openpyxl支持设置单元格的字体、颜色、边框等样式。

4-6、图表和公式

        用户可以通过openpyxl创建图表、添加公式等。

4-7、支持数字和日期格式

        openpyxl能够正确处理数字和日期格式,确保在Excel中显示正确的格式。

        综上所述,openpyxl库的出现填补了Python在处理Excel文件时的空白,经过不断的发展和完善,成为了一个功能丰富、易于使用的Python库。

二、openpyxl库的

        openpyxl库是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库,它基于Python,并且对于处理Excel文件提供了很多便利的功能,其主要点有:

1、优点
1-1、支持现代Excel格式

        openpyxl支持.xlsx格式的Excel文件,这是Excel 2010及更高版本使用的格式,也是目前广泛使用的格式。

1-2、功能丰富

        openpyxl提供了创建、修改和保存Excel工作簿、工作表、单元格、图表、公式、图像等功能。

1-3、易于使用

        openpyxl的API设计得相对直观,使得Python开发者能够很容易地掌握和使用。

1-4、与Excel兼容性

        openpyxl能够处理Excel文件中的很多复杂特性,如公式、样式、条件格式等,这确保了与Excel的良好兼容性。

1-5、性能良好

        在处理大型Excel文件时,openpyxl通常能够保持较好的性能。

1-6、社区支持

        openpyxl是一个开源项目,拥有活跃的社区支持和维护,这意味着开发者可以获得帮助和修复错误的快速响应。

1-7、跨平台

        openpyxl可以在不同的操作系统上运行,包括Windows、Linux和macOS等。

2、缺点
2-1、不支持旧版格式

        openpyxl不支持较旧的.xls格式(Excel 97-2003)。如果需要处理这种格式的文件,需要使用其他库如xlrd和xlwt(尽管这些库也面临一些兼容性和维护问题)。

2-2、某些特性支持有限

        虽然openpyxl支持许多Excel特性,但可能对于某些高级或特定的Excel功能支持有限或不支持。

2-3、内存占用

        在处理大型Excel文件时,openpyxl可能会占用较多的内存。这是因为openpyxl会将整个工作簿加载到内存中。

2-4、文档和示例可能不足

        尽管openpyxl的文档相对完整,但对于某些高级功能或特定用例,可能缺乏足够的示例或详细解释。

2-5.、依赖关系

        openpyxl依赖于lxml和et_xmlfile这两个Python库来处理XML和Excel文件,在某些环境中,可能需要额外安装这些依赖项。

2-6、学习曲线

        虽然openpyxl的API设计得相对直观,但对于初学者来说,可能需要一些时间来熟悉和掌握其用法。

三、openpyxl库的用途

        openpyxl是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它是用Python编写的,不需要Microsoft Excel,并且支持多种Excel数据类型,包括图表、图像、公式等,其主要用途有:

1、读取Excel文件

        你可以使用openpyxl来读取 Excel 文件中的数据,如单元格值、工作表名称、公式等,它支持多种数据类型,如字符串、数字、日期等。

2、写入Excel文件

        使用openpyxl,你可以创建新的Excel文件或向现有文件添加数据,你可以设置单元格的字体、颜色、边框等样式,你还可以添加图表、图像和其他复杂的Excel功能。

3、修改Excel文件

        你可以使用openpyxl来修改现有的Excel文件,如更改单元格值、添加或删除工作表等,这对于自动化数据处理和报告生成非常有用。

4、自动化

        openpyxl可以与其他Python库和框架(如 pandas、numpy、matplotlib 等)结合使用,以自动化数据处理和分析任务。你可以编写脚本来从多个数据源收集数据,将数据整合到 Excel 文件中,并执行各种数据分析任务。

5、与Excel交互

        如果你正在开发需要与Excel交互的应用程序或工具,openpyxl可以提供一个强大的API来处理Excel文件,它允许你读取和写入Excel文件,而无需依赖Microsoft Excel或其他第三方库。

6、数据迁移和转换

        使用openpyxl,你可以轻松地将数据从Excel文件迁移到其他数据库或文件格式,或将其他数据源的数据导入到Excel文件中。

7、创建模板化的报告

        你可以使用openpyxl来创建模板化的Excel报告,并在需要时填充数据,这对于需要定期生成具有一致格式和布局的报告的场景非常有用。

        总之,openpyxl是一个功能强大的库,可用于在Python中处理Excel文件,它提供了灵活的API来读取、写入、修改和自动化Excel文件的各个方面。

四、如何学好openpyxl库?

1、获取openpyxl库的属性和方法

        用print()和dir()两个函数获取openpyxl库所有属性和方法的列表

# ['DEBUG', 'DEFUSEDXML', 'LXML', 'NUMPY', 'Workbook', '__author__', '__author_email__', '__builtins__', '__cached__', 
# '__doc__', '__file__', '__license__', '__loader__', '__maintainer_email__', '__name__', '__package__', '__path__',
# '__spec__', '__url__', '__version__', '_constants', 'cell', 'chart', 'chartsheet', 'comments', 'compat', 'constants',
# 'descriptors', 'drawing', 'formatting', 'formula', 'load_workbook', 'open', 'packaging', 'pivot', 'reader', 'styles',
# 'utils', 'workbook', 'worksheet', 'writer', 'xml']
2、获取xlwt库的帮助信息

        用help()函数获取openpyxl库的帮助信息

Help on package openpyxl:NAMEopenpyxl - # Copyright (c) 2010-2024 openpyxlPACKAGE CONTENTS_constantscell (package)chart (package)chartsheet (package)comments (package)compat (package)descriptors (package)drawing (package)formatting (package)formula (package)packaging (package)pivot (package)reader (package)styles (package)utils (package)workbook (package)worksheet (package)writer (package)xml (package)SUBMODULESconstantsDATADEBUG = FalseDEFUSEDXML = FalseLXML = TrueNUMPY = True__author_email__ = 'charlie.clark@clark-consulting.eu'__license__ = 'MIT'__maintainer_email__ = 'openpyxl-users@googlegroups.com'__url__ = 'https://openpyxl.readthedocs.io'VERSION3.1.3AUTHORSee AUTHORSFILEe:\python_workspace\pythonproject\lib\site-packages\openpyxl\__init__.py
3、实战案例
3-141、引用输入了文本的全部单元格
# 3-141、引用输入了文本的全部单元格
import openpyxl
# 打开 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
# 获取所有工作表的名称
sheet_names = workbook.sheetnames
# 遍历每个工作表
for sheet_name in sheet_names:sheet = workbook[sheet_name]print(f"Processing sheet: {sheet_name}")# 遍历每一行和每一列for row in sheet.iter_rows():for cell in row:# 检查单元格是否包含文本if cell.data_type == 's':  # 's' 表示单元格包含字符串print(f"Cell {cell.coordinate} contains text: {cell.value}")
3-142、引用输入了逻辑值的全部单元格
略,openpyxl库暂不支持此功能,需要借助其他库实现
3-143、引用输入了批注的全部单元格
# 3-143、引用输入了批注的全部单元格
import openpyxl
# 打开 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
# 假设我们只对第一个工作表感兴趣
sheet = workbook.active  # 或者使用 workbook['Sheet1'] 来指定工作表名称
# 遍历工作表中的每一行和每一列
for row in sheet.iter_rows(min_row=sheet.min_row, max_row=sheet.max_row, min_col=sheet.min_column,max_col=sheet.max_column):for cell in row:# 检查单元格是否包含批注if cell.comment is not None:# 打印单元格的引用和批注的内容print(f"Cell {cell.coordinate} contains a comment: {cell.comment.text}")
3-144、引用没有输入任何数据和公式的空单元格
# 3-144、引用没有输入任何数据和公式的空单元格
import openpyxl
# 加载 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active  # 或者使用 workbook[sheetname] 指定具体的工作表
# 存储空单元格的列表
empty_cells = []
# 遍历工作表中的每个单元格
for row in sheet.iter_rows():for cell in row:if cell.value is None and cell.data_type != 'f':  # 检查单元格是否为空且没有公式empty_cells.append(cell.coordinate)  # 存储空单元格的坐标
# 输出所有空单元格的坐标
print("以下单元格为空且没有输入公式:")
for coord in empty_cells:print(coord)
3-145、引用所有可见的单元格
# 3-145、引用所有可见的单元格
import openpyxl
# 加载 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active  # 或者使用 workbook[sheetname] 指定具体的工作表
# 存储可见单元格的列表
visible_cells = []
# 遍历工作表中的每个单元格
for row in sheet.iter_rows():for cell in row:if not cell.column_letter in sheet.column_dimensions or not sheet.column_dimensions[cell.column_letter].hidden:if not cell.row in sheet.row_dimensions or not sheet.row_dimensions[cell.row].hidden:visible_cells.append(cell.coordinate)
# 输出所有可见单元格的坐标
print("以下单元格是可见的:")
for coord in visible_cells:print(coord)
3-146、引用输入了日期的单元格
# 3-146、引用输入了日期的单元格
import openpyxl
# 注意:这里没有从openpyxl.utils导入datetime,因为我们直接使用内置的datetime模块
from datetime import datetime
# 加载Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
# 如果需要检查所有工作表,可以使用workbook.sheetnames来迭代
sheet = workbook.active  # 或者使用workbook[sheetname]指定具体的工作表
# 存储包含日期的单元格的列表
date_cells = []
# 遍历工作表中的每个单元格
for row in sheet.iter_rows():for cell in row:# 检查单元格的值是否是datetime类型if isinstance(cell.value, datetime):date_cells.append(cell.coordinate)
# 输出所有包含日期的单元格的坐标
print("以下单元格包含日期:")
for coord in date_cells:print(coord)
3-147、引用含有相同计算公式的所有单元格
# 3-147、引用含有相同计算公式的所有单元格
import openpyxl
# 加载Excel文件
workbook = openpyxl.load_workbook('example.xlsx', data_only=False)
sheet = workbook.active  # 或者使用 workbook[sheetname] 指定具体的工作表
# 特定的公式
target_formula = '=SUM(C1:C2)'  # 例如 '=SUM(C1:C2)'
# 存储包含相同公式的单元格的列表
formula_cells = []
# 遍历工作表中的每个单元格
for row in sheet.iter_rows():for cell in row:if cell.value and isinstance(cell.value, str) and cell.value.startswith('='):if cell.value.strip().upper() == target_formula.strip().upper():formula_cells.append(cell.coordinate)
# 输出所有包含相同公式的单元格的坐标
print("以下单元格包含相同公式:")
for coord in formula_cells:print(coord)
3-148、引用合并单元格区域
# 3-148、引用合并单元格区域
import openpyxl
# 加载Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active  # 或者使用 workbook[sheetname] 指定具体的工作表
# 获取所有合并单元格的区域
merged_cells_ranges = sheet.merged_cells.ranges
# 遍历并输出所有合并单元格区域
print("以下是所有合并单元格的区域:")
for merged_range in merged_cells_ranges:print(merged_range)# 例如,可以获取合并单元格的起始单元格和结束单元格start_cell = sheet[merged_range.coord.split(":")[0]]end_cell = sheet[merged_range.coord.split(":")[1]]print(f"起始单元格: {start_cell.coordinate}, 结束单元格: {end_cell.coordinate}")# 示例:修改合并单元格的值start_cell.value = "新值"
# 保存修改后的工作簿
workbook.save('修改后的文件.xlsx')
3-149、引用定义名称所指定的单元格区域
略,openpyxl库暂不支持此功能,需要借助其他库实现
3-150、引用输入了任何内容的最后一行单元格
# 3-150、引用输入了任何内容的最后一行单元格
import openpyxl
def find_last_filled_row(sheet):# 初始化最后一行索引last_row = 0# 遍历每一行for row in sheet.iter_rows():for cell in row:if cell.value is not None:# 更新最后一行索引last_row = max(last_row, cell.row)return last_row
# 加载 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active  # 或者使用 workbook[sheetname] 指定具体的工作表
# 找到最后一行有内容的单元格的行号
last_filled_row = find_last_filled_row(sheet)
# 输出最后一行有内容的单元格的行号
print(f"最后一行有内容的单元格的行号是: {last_filled_row}")
# 示例:引用最后一行的单元格
if last_filled_row > 0:last_row_cells = sheet[last_filled_row]for cell in last_row_cells:print(f"单元格 {cell.coordinate} 的值: {cell.value}")
# 你可以在此处进行进一步的操作,例如修改最后一行的单元格的值
# 保存修改后的工作簿
workbook.save('修改后的文件.xlsx')
3-151、引用多个非连续单元格区域集合(类似Union方法)
# 3-151、引用多个非连续单元格区域集合(类似Union方法)
import openpyxl
# 加载 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active  # 或者使用 workbook[sheetname] 指定具体的工作表
# 定义多个非连续单元格区域
regions = ['A1:B2', 'D4:E5', 'G7:H8']
# 初始化一个字典来存储各区域的单元格
cells = {}
for region in regions:cells[region] = sheet[region]
# 示例:遍历并打印各区域的单元格的值
for region, cell_range in cells.items():print(f"Region: {region}")for row in cell_range:for cell in row:print(f"单元格 {cell.coordinate} 的值: {cell.value}")
# 示例:修改各区域的单元格的值
for cell_range in cells.values():for row in cell_range:for cell in row:cell.value = "修改后的值"
# 保存修改后的工作簿
workbook.save('修改后的文件.xlsx')
3-152、引用多个非连续单元格区域集合(循环处理)
# 3-152、引用多个非连续单元格区域集合(循环处理)
import openpyxl
# 加载 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active  # 或者使用 workbook[sheetname] 指定具体的工作表
# 定义多个非连续单元格区域
regions = ['A1:B2', 'D4:E5', 'G7:H8']
# 循环处理每个区域
for region in regions:cell_range = sheet[region]for row in cell_range:for cell in row:# 处理单元格的逻辑,例如打印单元格值print(f"单元格 {cell.coordinate} 的值: {cell.value}")# 示例:修改单元格的值cell.value = "新的值"
# 保存修改后的工作簿
workbook.save('修改后的文件.xlsx')
3-153、引用多个单元格区域的交叉区域
# 3-153、引用多个单元格区域的交叉区域
import openpyxl
def get_cells_from_range(sheet, cell_range):"""Helper function to get all cells from a given range."""cells = set()for row in sheet[cell_range]:for cell in row:cells.add(cell.coordinate)return cells
# 加载Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active  # 或者使用 workbook[sheetname] 指定具体的工作表
# 定义多个单元格区域
regions = ['A1:C3', 'B2:D4']
# 获取每个区域的单元格集合
sets_of_cells = [get_cells_from_range(sheet, region) for region in regions]
# 找出交叉区域的单元格
intersection = set.intersection(*sets_of_cells)
# 循环处理交叉区域的每个单元格
for cell_coord in intersection:cell = sheet[cell_coord]print(f"单元格 {cell.coordinate} 的值: {cell.value}")# 示例:修改单元格的值cell.value = "交叉区域"
# 保存修改后的工作簿
workbook.save('修改后的文件.xlsx')
3-154、获取计算公式的所有引用单元格
# 3-154、获取计算公式的所有引用单元格
import openpyxl
import re
def get_referenced_cells(formula):"""Helper function to extract referenced cells from a formula."""# Regular expression to match cell references like A1, B2, etc.cell_ref_pattern = re.compile(r'(\$?[A-Z]+\$?\d+)')return cell_ref_pattern.findall(formula)
# 加载 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active  # 或者使用 workbook[sheetname] 指定具体的工作表
# 选择包含公式的单元格
cell_with_formula = sheet['C7']  # 假设C7单元格包含公式
# 获取单元格的公式
formula = cell_with_formula.value
if formula and formula.startswith('='):# 提取公式中的所有引用单元格referenced_cells = get_referenced_cells(formula)print(f"公式 '{formula}' 引用了以下单元格: {referenced_cells}")# 示例:遍历并打印每个引用单元格的值for cell_ref in referenced_cells:cell = sheet[cell_ref]print(f"单元格 {cell.coordinate} 的值: {cell.value}")
else:print(f"单元格 {cell_with_formula.coordinate} 不包含公式或公式无效")
# 如果需要,可以保存修改后的工作簿
# workbook.save('修改后的文件.xlsx')
3-155、获取计算公式中引用的其他工作表单元格
略,openpyxl库暂不支持此功能,需要借助其他库实现
3-156、获取某个单元格的从属单元格
# 3-156、获取某个单元格的从属单元格
from openpyxl import load_workbook
import re
def find_dependent_cells(file_path, target_sheet, target_cell):wb = load_workbook(file_path, data_only=False)dependent_cells = []target_ref = f'{target_sheet}!{target_cell}'# 正则表达式匹配单元格引用,例如:A1pattern = re.compile(r"([A-Z]+[0-9]+)")for sheet in wb.sheetnames:ws = wb[sheet]for row in ws.iter_rows():for cell in row:if cell.data_type == 'f':  # 仅处理包含公式的单元格formula = cell.valuematches = pattern.findall(formula)cell_references = [f'{sheet}!{match}' for match in matches]if target_ref in cell_references:dependent_cells.append(f'{sheet}!{cell.coordinate}')return dependent_cells
if __name__ == '__main__':file_path = 'example.xlsx'  # 替换为你的Excel文件路径target_sheet = 'Sheet'  # 替换为目标单元格所在的工作表target_cell = 'A1'  # 替换为目标单元格dependent_cells = find_dependent_cells(file_path, target_sheet, target_cell)print(f'单元格 {target_sheet}!{target_cell} 的从属单元格: {dependent_cells}')
3-157、引用某个单元格所在的整个行
# 3-157、引用某个单元格所在的整个行
from openpyxl import load_workbook
import re
def find_dependent_rows(file_path, target_sheet, target_cell):wb = load_workbook(file_path, data_only=False)ws = wb[target_sheet]# 获取目标单元格所在的行号target_row = ws[target_cell].row# 构建目标行的单元格引用列表target_row_cells = [f'{target_sheet}!{ws.cell(row=target_row, column=col).coordinate}'for col in range(1, ws.max_column + 1)]# 正则表达式匹配单元格引用,例如:A1pattern = re.compile(r"([A-Z]+[0-9]+)")dependent_cells = []for sheet in wb.sheetnames:ws = wb[sheet]for row in ws.iter_rows():for cell in row:if cell.data_type == 'f':  # 仅处理包含公式的单元格formula = cell.valuematches = pattern.findall(formula)cell_references = [f'{sheet}!{match}' for match in matches]if any(ref in cell_references for ref in target_row_cells):dependent_cells.append(f'{sheet}!{cell.coordinate}')return dependent_cells
if __name__ == '__main__':file_path = 'example.xlsx'  # 替换为你的Excel文件路径target_sheet = 'Sheet'  # 替换为目标单元格所在的工作表target_cell = 'A1'  # 替换为目标单元格dependent_cells = find_dependent_rows(file_path, target_sheet, target_cell)print(f'单元格 {target_sheet}!{target_cell} 所在行的从属单元格: {dependent_cells}')
3-158、引用某个单元格所在的整个列
# 3-158、引用某个单元格所在的整个列
from openpyxl import load_workbook
import re
def find_dependent_columns(file_path, target_sheet, target_cell):wb = load_workbook(file_path, data_only=False)ws = wb[target_sheet]# 获取目标单元格所在的列号target_col = ws[target_cell].column# 构建目标列的单元格引用列表target_col_cells = [f'{target_sheet}!{ws.cell(row=row, column=target_col).coordinate}'for row in range(1, ws.max_row + 1)]# 正则表达式匹配单元格引用,例如:A1pattern = re.compile(r"([A-Z]+[0-9]+)")dependent_cells = []for sheet in wb.sheetnames:ws = wb[sheet]for row in ws.iter_rows():for cell in row:if cell.data_type == 'f':  # 仅处理包含公式的单元格formula = cell.valuematches = pattern.findall(formula)cell_references = [f'{sheet}!{match}' for match in matches]if any(ref in cell_references for ref in target_col_cells):dependent_cells.append(f'{sheet}!{cell.coordinate}')return dependent_cells
if __name__ == '__main__':file_path = 'example.xlsx'  # 替换为你的Excel文件路径target_sheet = 'Sheet'  # 替换为目标单元格所在的工作表target_cell = 'D10'  # 替换为目标单元格dependent_cells = find_dependent_columns(file_path, target_sheet, target_cell)print(f'单元格 {target_sheet}!{target_cell} 所在列的从属单元格: {dependent_cells}')
3-159、引用单元格区域所在的行范围
略,openpyxl库暂不支持此功能,需要借助其他库实现
3-160、引用单元格区域所在的列范围
略,openpyxl库暂不支持此功能,需要借助其他库实现

五、推荐阅读

1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回溯法c++学习 解决八皇后问题

使用回溯法解决八皇后问题 八皇后问题是一个以国际象棋为背景的问题:如何能够在88 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。这…

AUTOSAR汽车电子嵌入式编程精讲300篇-智能网联汽车CAN总线-发展现状

目录 前言 智能网联汽车的发展现状 国内外研究现状 智能网联汽车系统概述 智能网联汽车安全现状 智能网联汽车威胁分析 本文篇幅较长,分为多篇,文章索引详见 智能网联汽车CAN总线-发展现状 智能网联汽车CAN总线-智能网联汽车车内网络 智能网联汽车CAN总线-基于CAN…

pdf已加密如何解除?解密密码的两个方法【可加密】

电脑文件加密的目的就是保护重要信息,防止数据泄露。如果需要解除密码,应该如何操作呢?pdf已加密如何解除?本文整理了以下两种解除文件方法,希望能够帮到有需要的朋友们! 方法一、使用金舟文件夹加密大师解…

vue3+vite+nodejs,通过接口的形式请求后端打包(可打包全部或指定打包组件)

项目地址https://gitee.com/sybb011016/test_build 打包通过按钮的形式请求接口,让后端进行打包,后端使用express-generator搭建模版。前端项目就在npm init vuelatest基础上添加了路由 如果只想打包AboutView组件,首先修改后端接口。 //打…

Open3D (C++) 点云旋转至主成分空间

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 首先使用主成分分析法计算出点云的特征值与特征向量,然后根据点云的特征向量计算出点云与主成分空间之间的…

CocosCreator构建IOS教程

CocosCreator构建IOS教程 添加include: Header Search Paths:拖拽include过来 添加SoundEngine: Header Search Paths: 把SoundEngine POSIX Common 三个文件夹拖拽到里面去

Params(M), Multi-Adds (G),FLOPS之间的区别

参数数量(Params) 定义: 参数数量指的是模型中所有可训练参数的总数。这些参数包括权重和偏置项等 计算方式: 对于每一层神经网络,参数数量的计算方式如下: 全连接层(Fully Connected Layer&…

探索生成对抗网络(GANs)的新领域:创新应用与挑战

生成对抗网络(GANs)自2014年提出以来,已成为深度学习领域的一个重要分支。本文旨在探讨GANs在传统图像生成之外的新应用领域,包括艺术创作、虚拟现实、个性化推荐和生物信息学,并分析其面临的挑战和未来发展趋势。 关…

探讨公共表表达式(CTE)对对象关系映射(ORM)的影响:性能优化与最佳实践

在现代应用程序开发中,数据库查询和数据处理是不可或缺的一部分。为了提高开发效率和代码可维护性,ORM(对象关系映射)被广泛应用。然而,随着数据复杂度的增加,单纯依靠ORM进行复杂查询可能会导致性能瓶颈和…

如何将 ONLYOFFICE 文档 Linux 版更新到 v8.1

本指南将向您展示如何将 ONLYOFFICE 文档 Linux 版本更新到最新 8.1 版本。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一个功能强大的文档编辑器,支持处理文本文档、电子表格、演示文稿、可填写表单、PDF 和电子书,可多人在线协作,支持 AI 集…

P A T 甲级:分类题型|字符串处理|1152、1150、1005、1001题解及延伸

系列目录 目录 系列目录1152 Google Recruitment数学证明substr()stoi() 1150 Travelling Salesman Problem1005 Spell It Right1001 AB Format 1152 Google Recruitment 原题链接 C 若未特殊标明&#xff0c;以下题解均写用C #include <iostream>using namespace std;…

软件设计师笔记-操作系统知识(二)

线程 以下是关于线程的一些关键点&#xff1a; 线程是进程中的一个实体&#xff1a;进程是操作系统分配资源&#xff08;如内存空间、文件句柄等&#xff09;的基本单位&#xff0c;而线程是进程中的一个执行单元。多个线程可以共享同一个进程的地址空间和其他资源。线程是CP…

ElasticSearch-Windows系统ElasticSearch(ES)的下载及安装

前言 下载ElasticSearch 可以进入ElasticSearch官方下载地址&#xff0c;选择与电脑系统相对应的版本&#xff1b;博主已经上传资源&#xff0c;或者点此直接免费下载&#xff0c;本次演示版本为8.14.1。 注意&#xff1a; Elasticsearch 5 需要 Java 8 以上版本&#xff1b;…

菜籽桌面4.5.0~4.5.1常见问题解答

目录 如何刷机&#xff1f; 刷机失败&#xff1f; 无法方控&#xff1f; 无法画中画? 原车音乐跟我安装的音乐一起播放&#xff1f; 原车音乐停了&#xff0c;我安装的软件也跟着没声音了&#xff1f; 调节声音时忽大忽小&#xff1f; 怎么安装软件&#xff1f; 软件…

探究互联网领域知识,解密数字化时代神秘面纱

随着信息时代的不断发展&#xff0c;互联网的发展呈现出爆炸式的增长&#xff0c;以至于引起广泛的关注和深入的探究。互联网作为一个庞大的网络体系&#xff0c;涵盖着无穷无尽的信息和知识&#xff0c;其背后的科技和应用已经改变了人们的生活&#xff0c;产生了翻天覆地的变…

easyexcel导出数据格式时,设置数值格式

easyexcel导出数据格式时&#xff0c;设置数值格式 ExcelProperty(value"得分", index1) NumberFormat("0.00_ ") private Double score;加注解NumberFormat("0.00_ ")&#xff0c;注意需要有下划线和空号 如果还不生效&#xff0c;需要修改pom…

在 JavaScript 中处理异步操作和临时事件处理程序

关键技术和设计总结 使用 Promise 和 then 进行异步操作: 我们通过使用 Promise 来处理异步操作&#xff0c;确保操作按顺序执行。在 getReportListByCurrentTime 函数中&#xff0c;返回一个 Promise 对象&#xff0c;保证在数据加载完成后调用 resolve&#xff0c;以便可以在…

锐捷网络闪耀CVPR 2024,外观异常检测方案斩获世界认可!

近日&#xff0c;锐捷网络在“视觉异常检测和创新性检测2024挑战赛”(Visual Anomaly and Novelty Detection 2024 Challenge&#xff0c;简称VAND)的少样本逻辑/结构异常检测赛道(VAND 2.0赛道2)中荣获第二名&#xff0c;并在计算机视觉顶级会议CVPR 2024上展示了这一成果&…

深入解析:npm全局安装命令的误区与正确用法

在JavaScript和Node.js开发中&#xff0c;npm&#xff08;Node Package Manager&#xff09;是管理项目依赖的得力助手。开发者经常使用npm install命令来安装所需的包。然而&#xff0c;在使用全局安装时&#xff0c;可能会遇到npm install -g和npm install --global两种命令形…

2.用BGP对等体发送路由

2.用BGP对等体发送路由 实验拓扑&#xff1a; 实验要求&#xff1a;用BGP对等体发送路由信息 实验步骤&#xff1a; 1.完成基本配置&#xff08;略&#xff09; 2.建立BGP对等体&#xff08;略&#xff09; 3.创建路由信息&#xff08;用创建一个loop back接口就能产生一个直连…