python之如何复制excel模板并保留表格样式

 更新时间:2023年06月21日 11:11:14   作者:天才少女爱迪生  
这篇文章主要介绍了python之如何复制excel模板并保留表格样式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

python复制excel模板并保留表格样式

需求

按照模板生成excel报表。

本地有一个模板Excel表,是xlsx格式。

需要把传过来的数据,按照模板表生成新的写入数据的报表。

情况

先尝试了pandas,发现生成的新表并不会保留模板表中的样式。查了各种处理excel的库。

xlrd/xlwt/xlutils/win32/openpyxl等等,都有各种各样问题。

结果

使用openpyxl读取模板表,再保存,可以完全保留样式复制模板excel,而且支持xlsx.

 import openpyxl
 df=openpyxl.load_workbook('costDay.xlsx')
 # wb=copy(df)
 df.save('de.xlsx')

其实还有个可以保留样式的方式:

from xlrd import open_workbook
df=open_workbook('costDay.xlsx',formatting_info=True)

formatting_info的参数默认是False,默认不读取表格样式。如果设置True的话就会读取样式。

但很坑的一点是居然不支持xlsx,只支持xls。遂放弃。

python如何复制excel的表格内容及格式

python向excel写内容时,格式如保复用的问题

如下图

新写入的数据,要与第一列保持一致

直接写数据,效果是这样的式的,显然是不行。

# 定义一个函数,把df写入excel的指定位置
# start_line:excel写入的起始行
# data_df:要写入的数组
def write_excel(filepath,start_line, data_df):
    # 打开待写入文件
    filePath =filepath
    tableAll = op.load_workbook(filePath)
    table1 = tableAll['Sheet1']
    for c in range(data_df.shape[1]):
        for r in range(data_df.shape[0]):
            table1.cell(row=start_line, column=c + 2).value = data_df.columns[c]
            data = data_df.iloc[r, c]
            table1.cell(row=start_line + r + 2, column=c + 2).value = data
            # 以第一列复制格式
            table1.cell(row=start_line + r + 2, column=c + 2).font = copy(table1.cell(row=start_line + r + 2, column=1).font)
            table1.cell(row=start_line + r + 2, column=c + 2).fill = copy(table1.cell(row=start_line + r + 2, column=1).fill)
            table1.cell(row=start_line + r + 2, column=c + 2).border = copy(table1.cell(row=start_line + r + 2, column=1).border)
            table1.cell(row=start_line + r + 2, column=c + 2).number_format = copy(table1.cell(row=start_line + r + 2, column=1).number_format)
            table1.cell(row=start_line + r + 2, column=c + 2).protection = copy(table1.cell(row=start_line + r + 2, column=1).protection)
            table1.cell(row=start_line + r + 2, column=c + 2).alignment = copy(table1.cell(row=start_line + r + 2, column=1).alignment)
    tableAll.save(filePath)

效果是这样的

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Flask应用中执行指定JavaScript脚本的6种方法

    Flask应用中执行指定JavaScript脚本的6种方法

    在 Flask 应用中执行指定 JavaScript 脚本,需结合后端路由,模板渲染及前后端交互技术,本文主要介绍了六种核心方法及其实现细节,大家可以根据需要进行选择
    2025-06-06
  • Python简单实现将Markdown转为Word和PDF

    Python简单实现将Markdown转为Word和PDF

    在当今文档处理的时代,Markdown 已经成为了一种流行的轻量级标记语言,本文主要和大家介绍了如何使用Python实现将Markdown转为Word和PDF,感兴趣的小伙伴可以了解下
    2026-02-02
  • python实现全盘扫描搜索功能的方法

    python实现全盘扫描搜索功能的方法

    今天小编就为大家分享一篇python实现全盘扫描搜索功能的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python 数据的清理行为实例详解

    python 数据的清理行为实例详解

    这篇文章主要介绍了python 数据的清理行为实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • python判断文件是否存在常用的几种方式

    python判断文件是否存在常用的几种方式

    在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,这篇文章主要介绍了python判断文件是否存在常用的几种方式,需要的朋友可以参考下
    2025-06-06
  • Jupyter Notebook 安装配置与使用详解

    Jupyter Notebook 安装配置与使用详解

    这篇文章主要介绍了Jupyter Notebook 安装配置与使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Pytorch pth 格式转ONNX 格式的详细过程

    Pytorch pth 格式转ONNX 格式的详细过程

    PyTorch 训练的模型,需要在Jetson nano 上部署,jetson 原生提供了TensorRT 的支持,所以一个比较好的方式是把它转换成ONNX 格式,然后在通过ONNX 转换成TensorRT 格式,这篇文章主要介绍了Pytorch pth 格式转ONNX 格式,需要的朋友可以参考下
    2023-05-05
  • conda查看、创建、删除、激活与退出环境命令详解

    conda查看、创建、删除、激活与退出环境命令详解

    在不同的项目中经常需要conda来配置环境,这样能够实现不同版本的python和库的随意切换,并且减少了很多不必要的麻烦,下面这篇文章主要给大家介绍了关于conda查看、创建、删除、激活与退出环境命令的相关资料,需要的朋友可以参考下
    2023-05-05
  • 浅谈Python3中打开文件的方式(With open)

    浅谈Python3中打开文件的方式(With open)

    本文主要介绍了浅谈Python3中打开文件的方式(With open),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python查找算法之插补查找算法的实现

    Python查找算法之插补查找算法的实现

    这篇文章主要介绍了Python查找算法之插补查找算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论