tips: 简单实现Flask输出Excel报表 本文基于python3编写 代码仓库
项目场景由于项目是工程上的使用,不仅需要对采集的数据进行分析,也需要输出报表,使用程序输出报表极大的简化了报表制作流程。 Python处理Excel的包openpyxl 用于读取和写入Excel 2010文件的推荐包(即:.xlsx)。文档地址 xlsxwriter 用于编写数据,格式化信息,特别是Excel 2010格式的图表的替代软件包(即:.xlsx)。文档地址 xlrd 此包用于从旧的Excel文件中读取数据和格式信息(即:.xls)。文档地址 xlwt 此包用于将数据和格式信息写入旧的Excel文件(即:.xls)。文档地址 xlutils 该软件包收集需要xlrd和xlwt的实用程序,包括复制,修改或过滤现有excel文件的功能。一般来说,openpyxl现在涵盖了这些用例!文档地址
xlsxwriter简单使用项目上所需的报表,图表比较多,且比较复杂。所有就采用了绘图方面更加完善的xlsxwriter 包 安装pip install xlsxwriter 简单使用,更多详细内容请看官方文档。 import xlsxwriter
# 新建excel文本
workbook = xlsxwriter.Workbook("test.xlsx")
# 添加一个sheet
worksheet = workbook.add_worksheet("test1")
# 设置列宽
worksheet.set_column('A:A', 20)
# 添加字体加粗样式
bold = workbook.add_format({'bold': True})
# 写入数据
worksheet.write('A1', 'Hello')
# 写入数据并使用样子
worksheet.write('A2', 'World', bold)
# 使用数字标识单元格位置(行,列)
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)
# 按行依次写入数据
worksheet.write_column(4, 0, [1, 2, 3, 4])
# 按列依次写入数据
worksheet.write_row(1, 1, [1, 2, 3, 4])
# 添加图表
chart = workbook.add_chart({'type': 'column'})
# 图表数据来源
chart.add_series({'values': ["test1", # worksheet的名字。即sheet_name
4, 0, 7, 0 # 数据位置
]})
# 插入的表格位置
worksheet.insert_chart('B3', chart)
# 关闭excel文本并输出到指定位置。如果不调用改方法,无法输出excel
workbook.close()
Flask结合xlsxwriter使用测试代码 import xlsxwriter
from flask import Flask
def write():
path = "test.xlsx"
# 新建excel文本
workbook = xlsxwriter.Workbook(path)
# 添加一个sheet
worksheet = workbook.add_worksheet("test1")
# 设置列宽
worksheet.set_column('A:A', 20)
# 添加字体加粗样式
bold = workbook.add_format({'bold': True})
# 写入数据
worksheet.write('A1', 'Hello')
# 写入数据并使用样子
worksheet.write('A2', 'World', bold)
# 使用数字标识单元格位置(行,列)
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)
# 按行依次写入数据
worksheet.write_column(4, 0, [1, 2, 3, 4])
# 按列依次写入数据
worksheet.write_row(1, 1, [1, 2, 3, 4])
# 添加图表
chart = workbook.add_chart({'type': 'column'})
# 图表数据来源
chart.add_series({'values': ["test1", # worksheet的名字。即sheet_name
4, 0, 7, 0 # 数据位置
]})
# 插入的表格位置
worksheet.insert_chart('B3', chart)
# 关闭excel文本并输出到指定位置。如果不调用改方法,无法输出excel
workbook.close()
return path
app = Flask(__name__)
@app.route('/testExcel', methods=["GET"])
def test_excel():
"""
测试输出excel
:return:
"""
path = write()
return path
if __name__ == '__main__':
app.run()
启动app,访问http://127.0.0.1:5000/testExcel 返回生成路径test.xlsx 。然后配合nginx转发即可下载文件
总结
|