django操作word全程实录讲解(包含操作图片,内含代码下载地址)
目的
数据已经存储在django数据库中,现在希望将数据库中的数据按照特定字段导入到word中,实现数据的动态写入。同时提供下载方法给前端用户。
环境
python 3.6.1
django 1.11.14
pillow 5.2.0
docxtpl 0.5.0
djangorestframework 3.8.2
系统为win7 64位,word版本为2007(劲量为word2007,其他版本可能会出问题)
步骤
1. 新建django项目,在根目录下放置word模板文件“train.docx”
2 . 安装上述python安装包
pip install 。。。。
3. 修改前端html文件
{% extends "app/layout.html" %}{% block content %}<div class="jumbotron"><h1>测试</h1> <p><a href="{% url 'downloadreport' %}" class="btn btn-primary btn-large">生成word并下载</a></p>
</div>{% endblock %}
4 . 修改url.py文件
urlpatterns = [# Examples:url(r'^$', app.views.home, name='home'),url(r'^downloadreport', app.views.downloadreport, name='downloadreport'),]
5. 修改views.py文件
"""
Definition of views.
"""from django.shortcuts import render
from django.http import HttpRequest
from django.template import RequestContext
from datetime import datetime#新添加的用于报表的文件
import os
from django.http import StreamingHttpResponse
from django.utils.translation import ugettext_lazy as _
from rest_framework.response import Response
from rest_framework.decorators import api_view
from docxtpl import DocxTemplate
from docxtpl import InlineImage
from docx.shared import Mm, Inches, Ptdef home(request):"""Renders the home page."""assert isinstance(request, HttpRequest)return render(request,'app/index.html',{'title':'Home Page','year':datetime.now().year,})# 流方式读取文件
def read_file(file_name, size):with open(file_name, mode='rb') as fp:while True:c = fp.read(size)if c:yield celse:break@api_view(['GET'])
def downloadreport(request):filename = 'test.docx' # 所生成的word文档需要以.docx结尾,文档格式需要filepath = 'D://'template_path = os.getcwd() + '/train.docx'template = DocxTemplate(template_path)context1 = { 'chengyun' : "World company",'myimage': InlineImage(template, 'D:\\ceshi.jpg', width=Mm(30), height=Mm(60)), }template.render(context1)template.save(os.path.join(filepath,filename))response = StreamingHttpResponse(read_file(os.path.join(filepath, filename), 512))response['Content-Type'] = 'application/msword'response['Content-Disposition'] = 'attachment;filename="{}"'.format(filename)# time.sleep(10)return response
这里,我把图片命名为"ceshi.jpg"并且放在了D盘,在项目根目录的train.docx中添加了模板标签{{chengyun}}和{{myimage}}
然后采用django进行文字和图片的替换,同时图片给了长宽的参数用来进行图像尺寸的动态调整。文件读取方式采用了流读取方式,512字节的一个流。
整个项目采用VS2015在windows下开发,VS下安装django教程网址:https://mp.csdn.net/postedit/81103532
当然,采用其他IDE直接将该项目跑起来也没有问题。这里给出整个测试工程的代码地址
https://download.csdn.net/download/qianbin3200896/10621095
django操作word全程实录讲解(包含操作图片,内含代码下载地址)相关推荐
- Python入门到实战(五)自动化办公、pandas操作Excel、数据可视化、绘制柱状图、操作Word、数据报表生成、pip install国内镜像下载
Python入门到实战(五)conda使用.pandas操作Excel.数据可视化.绘制柱状图.操作Word.数据报表生成.pip install国内镜像下载 conda使用 常用操作 配置VS+Co ...
- python使用视频_Python中操作各种多媒体,视频、音频到图片的代码详解
我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...
- python播放视频代码_Python中操作各种多媒体,视频、音频到图片的代码详解
我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...
- python操作word的入门教程_Python操作Word的入门教程
咪哥杂谈 本篇阅读时间约为 5 分钟. 1 前言 近期比较忙,在做一个新项目,所以公众号更新时间拉长了许多...等忙完这一阵,依然会保持一周至少 2 篇的原创技术文章. 继续之前的主题,今天来介绍下, ...
- C# 操作Word书签(二)——插入图片、表格到书签;读取、替换书签
概要 书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间.在前一篇文章"C# 如何添加/删除Word书签"中介绍了插入.删除书签的方法,本篇文章将对C# 操作W ...
- java操作word文档(文字,图片,表格添加以及替换操作)
注:本文由于个人工作需要,有对多个他人博文进行借鉴,但是多数博文都只是讲到了小部分,例如图片/表格的操作,都只有根据书签进行替换,比较片面,本人有总结到根据文字进行图片/表格的替换,希望可以帮到更多有 ...
- C# VS2012操作word文档 (二).插入表格图片
在上一篇文章"C# VS2012创建word文档.(一)"中我们讲述了如何使用VS2012引用COM中Miscrosoft Word 14.0 Object Library实现创建 ...
- java 操作 word 表格和样式_poi 操作excel和word(修改样式和内容)
poi 操作excel和word(修改样式和内容) package com.zhibei.utils; import com.sun.scenario.effect.impl.sw.sse.SSEBl ...
- Java操作Word文档添加水印(文字/图片)
水印是一种常用于各种文档的声明.防伪手段,一般可设置文字水印或者加载图片作为水印.以下内容将分享通过Java编程给Word文档添加水印效果的方法. 使用工具:Free Spire.Doc for Ja ...
- python操作word文件_利用PYTHON操作WORD文档
office 2007 中不能直接打开 VB 编辑器,请按 Alt + F11 打开. import win32com.client # 导入脚本模块 WordApp = win32com.clien ...
最新文章
- python中opencv安装_怎么为python安装opencv模块-百度经验
- FFMPEG avformat_open_input
- DLL入门浅析(3)——从DLL中导出变量
- 【我拼搏的2016】-苦逼运维如何变身为SRE成长经历
- 华为简易压缩算法python_Python(9) --实现一个简单的压缩软件/解压软件的功能
- 去年计算机试题,微机去年试卷及答案,广东海洋大学
- 真香!腾讯再发阳光普照奖:每人100股,价值超6万!
- Python标准库socketserver使用线程混入实现异步TCP服务器
- shell脚本报错问题: -bash: ./test.sh: /bin/sh^M: bad interpreter: No such file or directory
- linux 下挂载光驱
- cad尺寸标注快捷键_CAD快速标注方法你知道几种?
- YYH的营救计划(NOIP模拟赛Round 6)
- 高数定理、法则(持续添加)
- 人工智能工程师要具备的5项基本技能
- 工银亚洲见证开户详细过程和攻略
- mysql数据库加锁语句_sql语句对数据库表进行加锁和解锁
- 高数 | 【概念剖析】多元函数的偏导数、方向导数、梯度以及微分之间的关系
- 将IMYWebLoader添加到蚂蚁mpaas框架中引发的问题和解决的问题
- byte[]与String互转对象和JSON相互转
- 程序员进阶之排错和避坑方法GitChat将要出炉