用PM2和xltpl开发一个Excel模板导出FLASK API

这篇具有很好参考价值的文章主要介绍了用PM2和xltpl开发一个Excel模板导出FLASK API。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作为码农最不会陌生的就是数据导出,最常见的就是Excel和Word。一般来说没啥,用个Office相关组件,写写格式和数据绑定都ok了,但是就怕管理层各种标准格式模板,你也不知道为什么用电脑 Analysis 几分钟的事(pandas之类,甚至不用gpt4),非要搞一堆格式漂亮,文字秀美的文档。于是,我在python里找到快乐——xltpl和docxtpl,分别支持xlsx和word的模板生成文档。

介绍

最初是Eric Lapouyade发现一件事——docx采用xml的格式,于是用Jinja2的html模板来套用docx。在2015年发布了docxtpl,但是这个作者没有开发spreedsheet部分。 而Zhang Yu也在2020年以此思路开发了xltpl,补全了这部分的遗憾。(个人推理)

总体两个package的api风格很像,用起来都非常上手。

代码部分

python

from flask import send_file
from xltpl.writerx import BookWriter
from urllib.parse import quote

def fix_info_excel():
    # 连接模板
    writer = BookWriter('./xxx信息表.xlsx')
    ws_info_map = {
        "sheet_name": "xxxx提供表", # sheet页名
        "name": "姓名",
        "age": 20,
        "gender": "男",
    }

    rows = [
        {
            "column1": "列1",
            "column2": "列2",
            "column3": "列3",
            "column4": "列4",
            "column5": "列5",
        },
        {
            "column1": "列21",
            "column2": "列22",
            "column3": "列23",
            "column4": "列24",
            "column5": "列25",
        },
        {
            "column1": "列31",
            "column2": "列32",
            "column3": "列33",
            "column4": "列34",
            "column5": "列35",
        }
    ]
    
    book=[ws_info_map] // 可以配置多个sheet页,这里是数组

    writer.render_book(book)
    writer.save('xxxwww信息表.xlsx')
    # 处理文件名带中文
    filename = quote('xxxwww信息表.xlsx')
    rv = send_file('xxxwww信息表.xlsx', 
        download_name=filename, # 这个参数名字已经改这个了 flask == 2.3.3
        as_attachment=True)

    
    rv.headers['Content-Disposition'] += "; filename*=utf-8''{}".format(filename)
    return rv

Excel

姓名:{{name}} 年龄:{{age}} 性别:{{gender}}

留白
留白 头1 头2 头3 头4 头5
添加批注:beforerow{% for row in rows %} {{row.column1}} {{row.column2}} {{row.column3}} {{row.column4}} {{row.column5}}
添加批注:beforerow{% endfor %}

javascript

axios({
    url: url,
    method: 'GET',
    responseType: 'blob',
    headers: {
        'Access-Control-Allow-Origin': '*',
    }
})
.then(response => {
    const href = window.URL.createObjectURL(response.data);

    const anchorElement = document.createElement('a');

    anchorElement.href = href;
    anchorElement.download = "xxxwww信息表.xlsx";

    document.body.appendChild(anchorElement);
    anchorElement.click();

    document.body.removeChild(anchorElement);
    window.URL.revokeObjectURL(href);
})
.catch(error => {
    console.log('error: ', error);
});

pm2.json

{
    "name": "flask_api",
    "script": "D:\\webapi2\\app.py",
    "interpreter": "D:\\webapi2\\venv\\Scripts\\python.exe",
    "autorestart" : false
}

运行pm2 start pm2.json就可以了,这个也支持windows起停服务。反正我是玩不转win32serviceutils

pm2不是python的开发工具,需要通过npm或yarn来安装的nodejs服务。但是这个工具很轻巧,给人一种docker的感觉,但是不是容器!!!

开发,爽就完事文章来源地址https://www.toymoban.com/news/detail-681524.html

到了这里,关于用PM2和xltpl开发一个Excel模板导出FLASK API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PM2入门及其常用命令

    进程管理主要是指创建,终止和监控进程。进程管理器主要是用来确保你的应用在启动后能够保持在线 pm2 是 nodejs 的进程管理器,默认支持负载均衡,能够守护进程。还支持查看应用运行时的性能,资源占用情况等 普通启动方式:node index.js,关闭终端就结束进程 node 进程挂

    2024年02月06日
    浏览(39)
  • pm2 运行springboot项目

    注意安装java版本必须和打包的java版本一致 java安装 安装nodejs 通过npm安装pm2 pm2.json 运行 启动项目即可 参考 https://www.bbsmax.com/A/KE5QmgZ35L/ https://blog.csdn.net/Aria_Miazzy/article/details/103895455

    2024年02月09日
    浏览(45)
  • 【软件工具】PM2的常用命令

    PM2的常用命令 PM2是node进程管理工具,可以利用它来简化很多node应用管理 的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 全局安装,简直不能更简单。   npm install -g pm2 用express应用来举例。一般我们都是通过npm start启动应用,其实 就是调用node ./bi

    2024年02月08日
    浏览(41)
  • 【机器学习】李宏毅-预测PM2.5

    巩固课堂所学知识,学习使用Linear Regression中梯度下降预测模型,并将所学运用至实践,根据从空气质量监测网下载的观测数据,使用Linear Regression 预测出空气污染指数(即PM2.5) 的数值。 •不可以使用numpy.linalg.lstsq •可以使用pandas库读取csv文件数据信息(其他库亦可) •必须使

    2024年02月06日
    浏览(52)
  • node.js PM2部署项目

    文章更新 2023-05-21 更新NSSM安装服务的方式 pm2 是一个守护进程管理工具,它能帮你守护和管理你的应用程序。通常一般会在服务上线的时候使用 pm2 进行管理。本文围绕以下重点进行讲解:安装pm2;命令行部署到PM2;PM2查看日志等命令;PM2进行负载均衡;PM2配置文件模式;日志

    2024年02月06日
    浏览(40)
  • ubuntu 22.04安装nodejs和pm2

    安装过程曲折,浅记录一下。最终通过nvm安装成功 第一反应就是用apt去安装node,命令如下: 最后也是安装成功了 然后用npm去安装pm2,结果报错了,可以看出时nodejs版本问题(ubuntu软件源默认nodejs版本是12.22.9) 所以apt安装虽然可行,但是版本不一致,根本装不了pm2 然后我就开始

    2024年02月21日
    浏览(37)
  • centos安装:node.js、npm及pm2

            Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。         NPM的全称是Nod

    2024年01月24日
    浏览(40)
  • .Net 6.0 部署Linux+Nginx +PM2教程

    今天带大家将本地.Net6.0项目部署到Linux系统中,其中有用到Nginx反向代理和PM2进程管理工具,希望本偏文章能对你有所帮助,成为你成功路上的垫脚石! 背景: 在.Net 5.0横空出世之后,.Net已经支持夸平台了,身为一名合格的码农,你敢说你不会用Linux? 哈哈哈开个玩笑,因为工作最近接手

    2023年04月19日
    浏览(32)
  • Windows下pm2调用npm和nuxt的办法

    其中index.js的路径就是npm全局安装的路径,可通过以下命令获取 新建文件pm2npm.js 于是也可以这么调用npm 项目根目录下创建ecosystem.config.js文件 参考文档:Nuxt 2 - PM2 然后执行pm2 start即可 参考文档:Nuxt 2 - Configuration 注意文档中说host: \\\'0\\\'这个在windows下无效。

    2024年02月06日
    浏览(44)
  • Linux搭建node环境-MobaXterm+node+pm2安装

    1.登录session 2.安装X11-forwarding 我也不知道这个有什么用,但是有个叉叉在那里有点难受,就把它解决了 什么是X11-forwarding?怎么使用? 安装完就没了叉叉 3.安装node 由于直接 yum 安装的 nodejs 版本太低,所以参考这篇文章安装:Linux中安装node 4.安装pm2 建立软连接: 输入pm2 li

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包