tips: 項(xiàng)目場(chǎng)景由于項(xiàng)目是工程上的使用,,不僅需要對(duì)采集的數(shù)據(jù)進(jìn)行分析,也需要輸出報(bào)表,,使用程序輸出報(bào)表極大的簡(jiǎn)化了報(bào)表制作流程,。 Python處理Excel的包openpyxl 用于讀取和寫入Excel 2010文件的推薦包(即:.xlsx)。文檔地址 xlsxwriter 用于編寫數(shù)據(jù),,格式化信息,,特別是Excel 2010格式的圖表的替代軟件包(即:.xlsx)。文檔地址 xlrd 此包用于從舊的Excel文件中讀取數(shù)據(jù)和格式信息(即:.xls),。文檔地址 xlwt 此包用于將數(shù)據(jù)和格式信息寫入舊的Excel文件(即:.xls),。文檔地址 xlutils 該軟件包收集需要xlrd和xlwt的實(shí)用程序,包括復(fù)制,,修改或過濾現(xiàn)有excel文件的功能,。一般來說,,openpyxl現(xiàn)在涵蓋了這些用例!文檔地址
xlsxwriter簡(jiǎn)單使用項(xiàng)目上所需的報(bào)表,,圖表比較多,,且比較復(fù)雜。所有就采用了繪圖方面更加完善的xlsxwriter 包 安裝pip install xlsxwriter 簡(jiǎn)單使用,,更多詳細(xì)內(nèi)容請(qǐng)看官方文檔,。 import xlsxwriter
# 新建excel文本
workbook = xlsxwriter.Workbook("test.xlsx")
# 添加一個(gè)sheet
worksheet = workbook.add_worksheet("test1")
# 設(shè)置列寬
worksheet.set_column('A:A', 20)
# 添加字體加粗樣式
bold = workbook.add_format({'bold': True})
# 寫入數(shù)據(jù)
worksheet.write('A1', 'Hello')
# 寫入數(shù)據(jù)并使用樣子
worksheet.write('A2', 'World', bold)
# 使用數(shù)字標(biāo)識(shí)單元格位置(行,列)
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)
# 按行依次寫入數(shù)據(jù)
worksheet.write_column(4, 0, [1, 2, 3, 4])
# 按列依次寫入數(shù)據(jù)
worksheet.write_row(1, 1, [1, 2, 3, 4])
# 添加圖表
chart = workbook.add_chart({'type': 'column'})
# 圖表數(shù)據(jù)來源
chart.add_series({'values': ["test1", # worksheet的名字,。即sheet_name
4, 0, 7, 0 # 數(shù)據(jù)位置
]})
# 插入的表格位置
worksheet.insert_chart('B3', chart)
# 關(guān)閉excel文本并輸出到指定位置,。如果不調(diào)用改方法,無法輸出excel
workbook.close()
Flask結(jié)合xlsxwriter使用測(cè)試代碼 import xlsxwriter
from flask import Flask
def write():
path = "test.xlsx"
# 新建excel文本
workbook = xlsxwriter.Workbook(path)
# 添加一個(gè)sheet
worksheet = workbook.add_worksheet("test1")
# 設(shè)置列寬
worksheet.set_column('A:A', 20)
# 添加字體加粗樣式
bold = workbook.add_format({'bold': True})
# 寫入數(shù)據(jù)
worksheet.write('A1', 'Hello')
# 寫入數(shù)據(jù)并使用樣子
worksheet.write('A2', 'World', bold)
# 使用數(shù)字標(biāo)識(shí)單元格位置(行,,列)
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)
# 按行依次寫入數(shù)據(jù)
worksheet.write_column(4, 0, [1, 2, 3, 4])
# 按列依次寫入數(shù)據(jù)
worksheet.write_row(1, 1, [1, 2, 3, 4])
# 添加圖表
chart = workbook.add_chart({'type': 'column'})
# 圖表數(shù)據(jù)來源
chart.add_series({'values': ["test1", # worksheet的名字,。即sheet_name
4, 0, 7, 0 # 數(shù)據(jù)位置
]})
# 插入的表格位置
worksheet.insert_chart('B3', chart)
# 關(guān)閉excel文本并輸出到指定位置。如果不調(diào)用改方法,,無法輸出excel
workbook.close()
return path
app = Flask(__name__)
@app.route('/testExcel', methods=["GET"])
def test_excel():
"""
測(cè)試輸出excel
:return:
"""
path = write()
return path
if __name__ == '__main__':
app.run()
啟動(dòng)app,,訪問http://127.0.0.1:5000/testExcel 返回生成路徑test.xlsx 。然后配合nginx轉(zhuǎn)發(fā)即可下載文件
總結(jié)
|