zoukankan      html  css  js  c++  java
  • python自动生成Docx(docxtpl库)

    python这个库很有用,可以格式化生成报告等。

    其他内容请点此处,下面只写docxtpl的功能代码。

    # coding: utf-8
    import web  # 我们用的webpy框架
    import StringIO
    form docxtpl import DocxTemplate
    
    def doctest():
        tpl = DocxTemplate('E:/safe.docx')  # 读取docx模板,注意:需要提前设置好模板,下面会介绍
        tpl = DocxTemplate('/home/sysadm/shell/usm/usm_tk_online2/usm/www/safetytrain/safe.docx')
        # 将文件流返回
        web.header('Content-type', 'aapplication/msword')  # 指定返回类型
        web.header('Transfer-Encoding', 'chunked')
        web.header('Content-Disposition',
                           'attachment;filename={0}'.format('名称' + '.doc'))
        list_docx = []  # 将需要写道doc的内容都放到list_docx列表里面
        list_docx.append({'personname':"personname","companyname":"companyname","division":"division"})
        datetody = str(datetime.date.today())  # 用来给doc名称动态显示时间
        list_docx_x, list_docx_y = divmod(len(list_docx), 35)  # 生产doc文档的页数
        
        if list_docx_y != 0:
            list_docx_count = list_docx_x + 1
        else:
            list_docx_count = list_docx_x
        list_docx_de = []
        page_s = []
        for i in range(list_docx_count):
            page_s.append(i+1)
        for i in range(list_docx_count):
            if i == list_docx_count - 1:
                li_c = list_docx[(i)*35:]
            else:
                li_c = list_docx[(i)*35: (i)*35 + 35]
            list_docx_de.append(li_c)
        
        ret = {"page":list_docx_count,"datetody":datetody, "total": list_docx_de}  # 在doc里面对ret进行取值
        # 以下都是固定写法
        tpl.render(ret)  
        sio = StringIO.StringIO()
        # 将文件保存为string流
        tpl.save(sio)
        # 将光标移到开头
        sio.seek(0)
        # 会在浏览器显示下载特效
        return sio.getvalue()

    模板语法(图片来至网络)

  • 相关阅读:
    Github上优秀的.NET Core开源项目的集合
    阿里云服务器CentOS7.5 部署RabbitMQ
    Centos7开放及查看端口
    虚拟机CentOS7.0 部署Redis 5.0.8 集群
    CentOS7 服务检查命令
    CentOS7 常用命令集合
    pyflink小试牛刀
    python mysql pymysql where 当多条件查询,动态出现某些查询条件为空,就不作为条件查询的情况
    centOS6.2 最小安装下的无线网络配置
    Linux命令提示符的配置
  • 原文地址:https://www.cnblogs.com/aaronthon/p/11609880.html
Copyright © 2011-2022 走看看