(pandas學習)對dataframe用to_excel輸出表格的格式修改

這幾天再寫一個腳本,從數據庫中提取數據,轉成dataframe然後清洗,最後轉成excel,然後再調用函數將其發送給客戶,但是這一此可以對excel的表格有特殊的需求,這就難倒我了,只不過爆肝後還是解決了方法

首先是xlsxwriter類的官方文檔

https://xlsxwriter.readthedocs.io/index.html

我這次的需求主要完成了:

在特定單元格輸入數據

刪除(隱藏)了多餘的行

設置特定單元格(列)的寬度

在幾個特殊的位置寫入值

加粗某些位置的值

我們都知道,用pandas的to_excel有兩種方法

第一種是:

# file_dir是excel要存放的地址和名字,frame是要轉換的dataframe

frame.to_excel(file_dir)

第二種是:

writer = pd.ExcelWriter(‘file_dir’)

frame.to_excel(writer, 'Sheet1')

writer.save()

我找到的方法只對第二種有效

基本的邏輯就是將excelwriter原本的格式清除,然後加入自己的格式

直接上我代碼把

import pandas as pd
import numpy as np
import pymssql
import xlwt
import pandas.io.formats.excel
import smtplib
def set_excel(df, set_dir):
    # 輸出表格並且設置表格寬度等
    pandas.io.formats.excel.header_style = None
    writer = pd.ExcelWriter(set_dir)
    df.to_excel(writer, 'Sheet1')
    # 設置格式
    workbook1 = writer.book
    worksheets = writer.sheets
    worksheet1 = worksheets['Sheet1']
    # 設置特定單元格的寬度
    worksheet1.set_column("N:N", 20)
    worksheet1.set_column("A:A", 12)
    worksheet1.set_column("H:H", 9)
    worksheet1.set_column("L:L", 9)
    
    # 修改幾個特殊單元格的內容
    cell_format = workbook1.add_format({'bold': True})
    worksheet1.write('A1', 'Datasource', cell_format)
    cell_format = workbook1.add_format({'bold': True})
    worksheet1.write('B1', 'Company', cell_format)
    # 標題加粗
    format1 = workbook1.add_format({'bold': 1})
    format2 = workbook1.add_format({'left':6})
    worksheet1.conditional_format('B1:N2', {'type':     'cell',
                                    'criteria': '>',
                                    'value':    15,
                                    'format':   format1
                                           })
    # 隱藏線條和第三行
    worksheet1.hide_gridlines(option=2)
    worksheet1.set_row(2, None, None, {'hidden': True})
    # 輸出表格
    writer.save()
    writer.close() 

有不懂的地方可以問我哦~ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章