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)
效果是这样的
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
pip/anaconda修改镜像源,加快python模块安装速度的操作
这篇文章主要介绍了pip/anaconda修改镜像源,加快python模块安装速度的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-03-03python3实现在二叉树中找出和为某一值的所有路径(推荐)
这篇文章主要介绍了python3实现在二叉树中找出和为某一值的所有路径,本文通过一个实例demo给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-12-12利用Pycharm将python文件打包为exe文件的超详细教程(附带设置文件图标)
在日常使用pycharm写好程序后,如何将程序打包为exe文件呢,下面这篇文章主要给大家介绍了关于利用Pycharm将python文件打包为exe文件的超详细教程,附带设置文件图标,需要的朋友可以参考下2022-08-08使用Python第三方库xlrd读取Excel中的数据的流程步骤
这篇文章主要给大家介绍了使用Python第三方库xlrd读取Excel中的数据的流程步骤,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下2023-12-12
最新评论