首页 > 编程语言 >【python小记】使用openpyxl库在同一个工作表下复制单元格(包括它们的值、样式和合并属性)

【python小记】使用openpyxl库在同一个工作表下复制单元格(包括它们的值、样式和合并属性)

时间:2024-07-03 21:52:46浏览次数:18  
标签:openpyxl source python start cell 表下 target col row

from openpyxl import load_workbook

# 加载工作簿和工作表
wb = load_workbook('test.xlsx')
sheet = wb['sheet1']


# 定义一个函数来复制样式
def copy_style(source_cell, target_cell):
    if source_cell.has_style:
        target_cell.font = source_cell.font.copy()
        target_cell.fill = source_cell.fill.copy()
        target_cell.border = source_cell.border.copy()
        target_cell.alignment = source_cell.alignment.copy()
        target_cell.number_format = source_cell.number_format
        target_cell.protection = source_cell.protection.copy()

    # 定义要复制的单元格范围和目标起始位置


source_start_row, source_start_col = 1, 1
source_end_row, source_end_col = 12, 11
target_start_row, target_start_col = 16, 1  # 假设从第14行开始复制

# 复制单元格值和样式
for row in range(source_start_row, source_end_row + 1):
    for col in range(source_start_col, source_end_col + 1):
        source_cell = sheet.cell(row=row, column=col)
        target_cell = sheet.cell(row=row + target_start_row - source_start_row,
                                 column=col + target_start_col - source_start_col)
        target_cell.value = source_cell.value
        copy_style(source_cell, target_cell)

    # 复制合并单元格属性
merged_ranges = []
for merge_range in sheet.merged_cells.ranges:
    min_col, min_row, max_col, max_row = merge_range.bounds
    if (min_row >= source_start_row and max_row <= source_end_row and
            min_col >= source_start_col and max_col <= source_end_col):
        # 这个合并区域与我们要复制的单元格范围有交集
        merged_ranges.append((min_row + target_start_row - source_start_row,
                              min_col + target_start_col - source_start_col,
                              max_row + target_start_row - source_start_row,
                              max_col + target_start_col - source_start_col))

    # 应用合并单元格
for min_row, min_col, max_row, max_col in merged_ranges:
    sheet.merge_cells(start_row=min_row, start_column=min_col,
                      end_row=max_row, end_column=max_col)

# 保存工作簿
wb.save('copied_within_same_sheet.xlsx')

 

标签:openpyxl,source,python,start,cell,表下,target,col,row
From: https://www.cnblogs.com/uuuuuuuuuuuuuuuu/p/18282617

相关文章

  • Python学习笔记27:进阶篇(十六)常见标准库使用之质量控制中的代码质量与风格第一部分
    前言本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。根据模块知识,一次讲解单个或者多个模块的内容。教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html质量控制质量控制(QualityControl,QC),主要关注于提高......
  • 【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法
    一、介绍坚果识别系统,使用Python语言进行开发,通过TensorFlow搭建卷积神经网络算法模型,对10种坚果果实('杏仁','巴西坚果','腰果','椰子','榛子','夏威夷果','山核桃','松子','开心果','核桃')等图片数据集进行训练,得到一个识别精度较高的模型文件,让后......
  • python更新包、pip延时报错,pip check 查询冲突
    pip下载package或者更新package会出现延迟报错的问题,因为python默认使用的是国外镜像,有时候下载非常慢,我们可以选择进行换源,引用国内的镜像资源进行更新或者下载。阿里云: http://mirrors.aliyun.com/pypi/simple/中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/......
  • Web安全基础学习:Python反序列化漏洞之pickle反序列化
    理论基础序列化与反序列化序列化和反序列化是指用于将对象或数据结构转换为字节流的过程,以便在不同系统之间进行传输或存储,并在需要时重新构造。序列化是指将对象或数据结构转换为字节流的过程。在序列化过程中,对象的状态和数据被转换为一系列字节,这些字节可以按照一定......
  • Python运算符
    一,算数运算符1.什么是算数运算符算数运算符是用于进行数学运算的符号。运算符用于对数字进行加减乘除等数学运算,并返回运算结果。2.算数运算符的分类基础的      加(+) 减(-) 乘(*) 除(/)   四则运算(这些是我们上小学都开始学的了)在Python中还有一些我们经......
  • python的运算符
    算数运算符   python算数运算符有七种,{+,-,*,/,%,//,**}         +表示求和a=10b=20c=a+bprint(c)          -表示相减a=10b=20c=b-aprint(c)    *表示相乘a=10b=20c=a*bprint(c......
  • 这个神器绝了!可视化 Python 打包 exe
     在Python开发中,如何将脚本打包成独立的可执行文件,是许多开发者面临的挑战。特别是在需要将应用程序分发给不具备Python环境的用户时,打包工具显得尤为重要。auto-py-to-exe作为一款强大的Python打包工具,为开发者提供了简便快捷的解决方案。那么,auto-py-to-exe究竟是如何简化......
  • Python预测体重变化:决策树、tf神经网络、随机森林、梯度提升树、线性回归可视化分析吸
    全文链接:https://tecdat.cn/?p=36648原文出处:拓端数据部落公众号在当今的数据驱动时代,机器学习算法已成为解析复杂数据集、揭示隐藏模式及预测未来趋势的重要工具。特别是在医疗健康领域,这些算法的应用极大地提升了我们对疾病预防、诊断及治疗方案的理解与制定能力。本文旨在通......
  • 手把手教你如何用python写一个经典小游戏(仅需100行以内的代码)
    创作灵感小时候也就是大概十几年前的时候,智能触屏手机还未大量普及,移动网络还是2G,大部分人用的都是小灵通,里面只有几款经典的游戏,比如俄罗斯方块,贪吃蛇等。还记得以前自己玩的不亦乐乎。如今网络发展迅速,通讯设备越来越智能化,集成化,这些上世纪的经典游戏似乎早已淡忘人们的视......
  • 基于python语言的网页设计(手把手教你设计一个个人博客网站)
     总体的设计思路设计网页的思路涉及多个方面,从前端的页面结构和样式,到后端的数据处理和逻辑实现。1.确定网站的需求和功能首先要明确网站的功能需求,比如用户注册登录、博客文章发布和展示、评论系统等。2.选择技术栈选择适合的框架和工具。对于Python,常用的Web框架包括Fl......