這幾天再寫一個腳本,從數據庫中提取數據,轉成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()
有不懂的地方可以問我哦~