首页 > 编程问答 >python 复制 excel 保留文档中完全相同的参数(样式、单元格大小和融合、边框...)

python 复制 excel 保留文档中完全相同的参数(样式、单元格大小和融合、边框...)

时间:2024-07-20 20:11:45浏览次数:14  
标签:python excel attributes copy styles

我正在寻找一种在其他文件中复制和excel的方法。我有一个“file_1.xlsx”,但我想要一个不存在的“file_1_copy.xlsx”。副本必须与原始文件完全相同,这意味着单元格大小、它们的融合、单元格中文本的颜色、背景、如果有边框,就好像我用右键单击。

我有:

import openpyxl
from openpyxl.styles import Font

wb = openpyxl.load_workbook('test excel.xlsx')
ws = wb.active

new_wb = openpyxl.Workbook()
new_ws = new_wb.active

for row in ws.iter_rows():
    for cell in row:
        new_cell = new_ws.cell(row=cell.row, column=cell.col_idx, value=cell.value)
        if cell.has_style:
            new_cell.font = Font(name=cell.font.name, size=cell.font.size, bold=cell.font.bold, italic=cell.font.italic, color=cell.font.color)

new_wb.save('test copie excel.xlsx')

enter image description here

所以在图像上,左侧是原始文件。副本位于右侧,但第一个单元格中的文本应该有两种颜色:右侧和蓝色,并以黄色突出显示。或者在副本中,我只有一种颜色,所有文本都变成红色,并且不再过亮。 是否存在一种简单的方法来复制 Excel,就好像通过右键单击手动完成一样,这将准确复制原始文件及其内部的所有属性/元素?


你几乎已经掌握了使用 openpyxl 库复制 Excel 文件的关键要素,但还需要一些步骤才能完全保留样式、单元格大小和合并。

以下是更完善的代码版本,它处理了更多样式和结构方面的内容:

import openpyxl
from copy import copy

def copy_excel_with_full_format(source_file, target_file):
    """
    使用 openpyxl 复制 Excel 文件,保留所有样式、单元格大小和合并。

    Args:
      source_file (str): 源 Excel 文件的路径。
      target_file (str): 目标 Excel 文件的路径。
    """

    wb = openpyxl.load_workbook(source_file)
    new_wb = openpyxl.Workbook()
    new_wb.remove(new_wb.active)  # 删除默认工作表

    for sheet in wb:
        new_sheet = new_wb.create_sheet(sheet.title)

        # 复制单元格内容和样式
        for row in sheet.iter_rows():
            for cell in row:
                new_cell = new_sheet.cell(row=cell.row, column=cell.column, value=cell.value)
                if cell.has_style:
                    new_cell._style = copy(cell._style)  # 复制所有样式属性

        # 复制行高和列宽
        for i, row in enumerate(sheet.iter_rows()):
            new_sheet.row_dimensions[i + 1].height = sheet.row_dimensions[i + 1].height
        for i, col in enumerate(sheet.iter_cols()):
            new_sheet.column_dimensions[col[0].column_letter].width = sheet.column_dimensions[col[0].column_letter].width

        # 复制合并单元格
        for ranges in sheet.merged_cells.ranges:
            new_sheet.merge_cells(str(ranges))

    new_wb.save(target_file)


# 使用方法
copy_excel_with_full_format("test excel.xlsx", "test copie excel.xlsx")

这段代码做了以下改进:

  1. 复制所有样式属性: 使用 copy(cell._style) 直接复制所有样式属性,包括颜色、边框、对齐方式等,而不是逐个复制。
  2. 复制行高和列宽: 迭代所有行和列,并将它们的高度和宽度复制到新工作表中。
  3. 复制合并单元格: 使用 sheet.merged_cells.ranges 获取源工作表中所有合并单元格的范围,并使用 new_sheet.merge_cells() 在新工作表中创建相同的合并单元格。

通过这些改进,你的 Excel 文件副本现在应该与原始文件完全相同,包括所有样式、单元格大小和合并单元格。

标签:python,excel,attributes,copy,styles
From: 78772527

相关文章

  • python查看某个包的当前安装版本以及最新版本
    方法1:使用pip和--outdated参数你可以使用piplist--outdated命令来查看哪些包有更新版本可用。这个命令会列出所有安装的包以及它们在PyPI上的最新版本。piplist--outdated这将输出一个包列表,包含当前版本和最新版本,例如:PackageVersionLatestTyp......
  • 【python】错误 SyntaxError: invalid syntax的解决方法总结
    【python】错误SyntaxError:invalidsyntax的解决方法总结在Python编程中,SyntaxError:invalidsyntax是一个常见的错误,通常表示Python解释器在尝试解析代码时遇到了语法错误。这种错误可能由多种原因引起,包括拼写错误、缺少关键字、不恰当的缩进等。本文将深入探讨......
  • MiniQMT国债逆回购策略Python代码全解析
    文章目录......
  • python—爬虫的初步了解
    Python爬虫(WebScraping)是一种自动化从网站上提取数据的技术。Python由于其简洁的语法、丰富的库和强大的社区支持,成为了实现网络爬虫的首选语言之一。下面是一些Python爬虫的基本概念和步骤:1.爬虫的基本概念请求(Request):爬虫向服务器发送的请求,通常包括URL、HTTP方法(如......
  • Python集合的概念与使用
      在Python中,集合(set)是一种无序且不包含重复元素的数据结构。集合对象由一组大括号 或 函数创建,但请注意,大括号 在没有元素的情况下会创建一个空字典,而不是空集合。因此,当你想创建一个空集合时,应该使用 set()函数而不是 set{}集合的特点无序:集合中的元素没有特定的......
  • python——面向对象(2)继承与多态
    文章目录继承的基本语法继承的特点继承的类型多态在Python中,继承是一种基于已存在的类来创建新类的方式。这种机制允许我们定义一个通用的类,然后基于这个类来定义一些特定的类,这些特定的类将继承通用类的属性和方法,同时也可以添加或覆盖一些新的属性和方法。这种方式......
  • Python 更换 pip 源详细指南
    目录前言pip国内源临时换源方法一:添加参数方法二:设置环境变量永久换源方法三:修改配置方法四:pip命令修改总结前言在我们使用Python3时,pip是一个不可或缺的工具,它用于安装和管理第三方库。然而,有时我们可能会遇到Python库下载速度慢的问题,这是因为默认的pi......
  • 使用Python的Turtle库绘制中国火箭模型,点燃航天梦!
    引言在编程教育中,turtle模块是一个非常受欢迎的图形化编程工具,尤其适合初学者学习和实践。它允许我们通过控制一个可以在屏幕上移动的“小乌龟”来绘制各种形状和图案,从而让编程变得直观且有趣。Turtle库简介turtle是Python标准库的一部分,它提供了一个简单而强大的绘图环......
  • 用Python调整图片尺寸教程【附源码】
    就像我们学习数学一样,多做题多练习,才会熟能生巧。更多项目源码,实战案例,文件夹领取方式在文末学习Python也是一样,练习才是学好Python的最优解。只有不停的敲代码,不断练习,才能不断进步。实操练习你是否遇到过上传照片有大小要求?不管是上传证件照报名参赛,总会有一个不要......
  • 干货 |Python中的循环结构
    应用场景我们在写程序的时候,一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向移动的指令。在这个场景中,让机器人向球门方向移动就是一个需要重复的动作,当然这里还会......