python之如何復制excel模板并保留表格樣式
python復制excel模板并保留表格樣式
需求
按照模板生成excel報表。
本地有一個模板Excel表,是xlsx格式。
需要把傳過來的數據,按照模板表生成新的寫入數據的報表。
情況
先嘗試了pandas,發(fā)現生成的新表并不會保留模板表中的樣式。查了各種處理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)
效果是這樣的
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
配置 Pycharm 默認 Test runner 的圖文教程
今天小編就為大家分享一篇配置 Pycharm 默認 Test runner 的圖文教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python3.4學習筆記之常用操作符,條件分支和循環(huán)用法示例
這篇文章主要介紹了Python3.4常用操作符,條件分支和循環(huán)用法,結合實例形式較為詳細的分析了Python3.4常見的數學運算、邏輯運算操作符,條件分支語句,循環(huán)語句等功能與基本用法,需要的朋友可以參考下2019-03-03給Python的Django框架下搭建的BLOG添加RSS功能的教程
這篇文章主要介紹了給Python的Django框架下搭建的BLOG添加RSS功能的教程,示例代碼非常簡單,需要的朋友可以參考下2015-04-04