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()
模板语法(图片来至网络)
python自动生成Docx(docxtpl库)的更多相关文章
- python自动生成excel(xlwt库)
下面代码使用web.py框架,其他框架都大同小异. # coding: utf- import web import json import datetime import xlwt import S ...
- 从用python自动生成.h的头文件集合和类声明集合到用python读写文件
最近在用python自动生成c++的类.因为这些类会根据需求不同产生不同的类,所以需要用python自动生成.由于会产生大量的类,而且这些类是变化的.所以如果是在某个.h中要用include来加载这些 ...
- 利用python自动生成verilog模块例化模板
一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...
- Python自动生成代码工具
项目中有一个需求,对一个基类而言,拥有一个比较方法和拷贝方法,某些地方需要频繁地对这两个方法进行调用.对于所有子类而言,需要重写这两个方法,并在其中维护类内一些成员变量.例如有一个变量m_iMyVal ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- python 自动生成C++代码 (代码生成器)
python 代码自动生成的方法 (代码生成器) 遇到的问题 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错:而借用pyth ...
- python自动生成bean类
近期在学习python,一直在和java做对比,目前没有发现有通过字段自动生成getter setter方法,故此自己写了一个类,可以通过__init__方法传入类名和字段数组,再调用内部的方法,就可 ...
- python笔记 利用python 自动生成条形码 二维码
1. ean13标准条形码 from pystrich.ean13 import EAN13Encoder encode = EAN13Encoder(') encode.save('d:/barco ...
- python 自动生成model 文件 案例分析
生成方式 Python中想要自动生成 model文件可以通过 sqlacodegen这个命令来生成对应的model文件 sqlacodegen 你可以通过pip去安装: pip install sql ...
随机推荐
- git 平时遇到的问题记录
1.git warning: LF will be replaced by CRLF in 解决办法 git config core.autocrlf false 2.git提交时如何忽略一些文件 h ...
- 记EXSI虚拟机CentOS7断电无法启动修复过程
参考:https://msd.misuland.com/pd/3148108429789233656 EXSI6.7安装虚拟机CentOS7.5 1804 断电后启动页面进度条很慢 最后出现如下提示 ...
- iOS-UIScreen,UIFont,UIColor,UIView,UIButton
6.1 UIScreen // 屏幕的宽度 CGFloat screenW = [UIScreen mainScreen].bounds.size.width; 6.2 UIFont + (UIFon ...
- self-attention详解
编写你自己的 Keras 层 对于简单.无状态的自定义操作,你也许可以通过 layers.core.Lambda 层来实现.但是对于那些包含了可训练权重的自定义层,你应该自己实现这种层. 这是一个 K ...
- 01.轮播图之二 :tableView 轮播
在做这个tablevew轮播的时候,重要的就是修改frame 和view 的翻转了:::: 也是不难的,概要的设计和scroll 轮播是一致的: 首先是 .h 的文件 @interface Table ...
- VMware VSAN 设计规则
1.集群节点数量:3-64台主机(生产环境最少4节点起,5.5版本支持32节点,6.0版本支持64节点),配置万兆网卡,主机规格应满足VSAN兼容性要求. 2.每台主机需配置磁盘组,每台主机的磁盘组数 ...
- 學校 iPad 使用學校google帳號登入Google Drive 提示"裝置政策提醒"的解決方法
因爲學校iPad 是給學生和老師使用,大多數是不需要設置鎖屏密碼的,然後 Gsuite 默認是開啓 “行動管理服務” 的策略為基本,就是需要設備設置鎖屏密碼以保障資料安全,不那麽容易被竊取. 然後就出 ...
- 股票PE的应用
投资股票前,需要先分析公司,然后做估值.最后拿这估值对比现在它的现价,如果现价远低于估值,那就买入,因为这时候相当于打折价. 分析要怎么分析,估值要怎么估值 就像拿不同的旋头去维修不同的电器是一样的原 ...
- YIIMP矿池搭建
本文将以Verge(x17)和Raven(x16rv2)为例子来说明多算法矿池YIIMP的搭建过程. 1 环境准备 1.1 准备Ubuntu 准备虚拟机或物理机,操作系统为Ubuntu 18.04,之 ...
- mybatis 一对多,多对一配置
一. 简介: 本实例使用顾客和订单的例子做说明: 一个顾客可以有多个订单, 一个订单只对应一个顾客 二. 例子: 1. 代码结构图: 2. 建表语句: CREATE DATABASE test; US ...