怎样将html数据导出php html生成word文档txt文档 django

2440人阅读
Python(27)
利用Django生成PDF文档
本小节说明如何利用Django视图动态生成PDF文档。此功能是由优秀的开源Python PDF库实现的。
动态生成PDF文档的好处在于你可以定制PDF文档以实现不同的目标,比如针对不同的用户或者不同的内容进行相关定制。
举例来说,在网站上Django被用来生成美国大学生体育联盟(NCAA)锦标赛对阵表,这些自定义的适于打印的PDF文档可以服务于参与三月份冠军赛季的人们。
安装ReprotLab
从可以下载并安装ReportLab库,附带的说明了安装方法。
可以使用如下指令将ReprotLab库导入Python交互解释器以测试安装情况:
&&& import reportlab
如果此命令没有输出任何错误则表明安装成功。
自定义视图
使用Django动态生成PDF文档的关键在于明白ReprotLabAPI作用于类文件对象,例如Django的对象就是类文件对象。
下面是一个“Hello World”的例子程序:
from reportlab.pdfgen import canvas
from django.http import HttpResponse
defsome_view(request):
# Create the HttpResponse object with the appropriate PDF headers.
response=HttpResponse(mimetype='application/pdf')
response['Content-Disposition']=' filename=somefilename.pdf'
# Create the PDF object, using the response object as its &file.&
p=canvas.Canvas(response)
# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
p.drawString(100,100,&Hello world.&)
# Close the PDF object cleanly, and we're done.
p.showPage()
return response
以上代码和注释基本可以自解释,只有以下几点需要说明一下:
·& 类文件对象response被指定了一个特殊的MIME类型——“application/pdf”。浏览器据此便知道这是一个PDF文档,而不是一个HTML文件。如果没有这个信息,浏览器很可能会以HTML形式输出文件,造成页面显示十分难看。
·& response还有一个附加的Content-Disposition首部,其中包含了PDF文件的名称。此文件名是任意的,你可以随意指定。浏览器将在“另存为”对话框等地方用到它。
·& Content-Disposition首部在本例中以“”起始。这一语句强制浏览器显示一个对话框来提示并请求确认如何处理当前文档,无论是否有其他的默认配置。如果你像下面所示的代码那样不写这个起始语句,则浏览器会使用默认程序或插件来处理PDF文档:
response['Content-Disposition']='filename=somefilename.pdf'
·& 调用ReportLab API很简单,只需要将response作为第一个参数传递给canvas.Canvas。Canvas类需要一个类文件对象,而response作为对象正符合这个要求。
·& 注意,所有后续的生成PDF的方法都以PDF对象(在本例中即为p)而不是response对象调用。
·& 最后,对PDF文件对象调用函数showPage()和save()是很重要的。
复杂PDF文档的生成
如果你想使用ReprotLab库生成一个形式很复杂的PDF文档,可以考虑使用库建立你的PDF文档的临时缓冲区以便进行更复杂的操作。cStringIO库提供了一个非常高效的类文件对象接口。以下是上面提到的“Hello World”例子的cStringIO版:
from cStringIO import StringIO
from reportlab.pdfgen import canvas
from django.http import HttpResponse
defsome_view(request):
# Create the HttpResponse object with the appropriate PDF headers.
response=HttpResponse(mimetype='application/pdf')
response['Content-Disposition']=' filename=somefilename.pdf'
buffer=StringIO()
# Create the PDF object, using the StringIO object as its &file.&
p=canvas.Canvas(buffer)
# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
p.drawString(100,100,&Hello world.&)
# Close the PDF object cleanly.
p.showPage()
# Get the value of the StringIO buffer and write it to the response.
pdf=buffer.getvalue()
buffer.close()
response.write(pdf)
return response
是另一个可用于生成PDF的库,提供了Python实现。利用本文中阐述的基本原理即可将它与Django集成起来使用。也是一个用于生成PDF的库,同时自带一个如何在Django中集成使用Pisa的例子程序。是一个可以将HTML转换为PDF的命令行脚本,但并未提供Python接口。不过你可以使用system函数或者popen函数来执行这个命令行脚本,然后使用Python捕获输出进行处理。
其他格式
以上例子中除了使用reprotlab库的代码外,并没有多少只适用于PDF的处理。因此只要你找得到相应的Python库,可以使用类似的方法生成任意其他格式的文件。在小节中有另一个例子,里面讲解了如何生成文本格式的文件。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:133014次
积分:2047
积分:2047
排名:第17180名
原创:47篇
转载:15篇
评论:31条
文章:10篇
阅读:29446
(1)(4)(4)(6)(12)(3)(1)(1)(1)(3)(3)(3)(1)(2)(2)(6)(7)(3)插件描述:jQuery-tableExport是一款可以将普通HTML表格内容导出为CSV、XLS、TXT或SQL格式的jQuery插件。
简要教程jQuery-tableExport是一款可以将普通HTML表格内容导出为CSV、XLS、TXT或SQL格式的jQuery插件。使用方法使用该导出表格内容插件需要在页面中引入jquery和tableExport.js文件。&script&src=&path/to/jquery.min.js&&&/script&
&script&src=&dist/tableExporter.js&&&/script&HTML结构表格可以是普通的HTML表格,或bootstrap的表格。&div&class=&table-responsive&&
&&&&&&&table&id=&firm_table&&class=&table&table-striped&table-bordered&table-hover&&
&&&&&&&&&thead&
&&&&&&&&&&&tr&
&&&&&&&&&&&&&th&#&/th&
&&&&&&&&&&&&&th&First&Name&/th&
&&&&&&&&&&&&&th&Last&Name&/th&
&&&&&&&&&&&&&th&E-Mail&/th&
&&&&&&&&&&&&&th&Number&/th&
&&&&&&&&&&&/tr&
&&&&&&&&&/thead&
&&&&&&&&&tbody&
&&&&&&&&&&&tr&
&&&&&&&&&&&&&td&1&/td&
&&&&&&&&&&&&&td&Delpha&/td&
&&&&&&&&&&&&&td&siliciophite&/td&
&&&&&&&&&&&&&td&&/td&
&&&&&&&&&&&&&td&&/td&
&&&&&&&&&&&/tr&
&&&&&&&&&&......
&&&&&&&&&/tbody&
&&&&&&&/table&
&&&&&/div&
&/div&初始化插件在页面DOM元素加载完毕之后,可以通过tableExport()方法来初始化该插件。$('.table').tableExport({
&&&&filename:&'table',
&&&&format:&'csv'
});或者在初始化时传入配置参数:$('.table').tableExport({
&&&&//&导出文件的名称
&&&&filename:&'table_%DD%-%MM%-%YY%',
&&&&//&导出文件的格式:csv,&xls,&txt,&sql
&&&&format:&'xls',
&&&&//&导出指定的表格列
&&&&cols:&'2,3,4'
});配置参数日期格式:%DD% ? day%MM% ? month%YY% ? year%hh% ? hours%mm% ? minutes%ss% ? seconds配置参数:filename:导出文件的名称。format:导出文件的格式。cols:指定导出的表格列。head_delimiter:导出时分离标题。column_delimiter:导出时隔离的列。before(this):回调函数。onafter(this):回调函数。
相关插件-杂项,独立的部件
讨论这个项目(13)回答他人问题或分享插件使用方法奖励jQ币
head_delimiter、column_delimiter 这两个参数如何使用?
求解,导出excel中文乱码
我这里测试导出中文是好的,你是不是没有设置好编码格式,utf-8.
小胖纸在这里 0
为什么IE上第一下运行的时候,直接跳到一个上面说此网页上某些内容或文件所需的程序尚未安装的页面,然后返回再运行就一直转圈,别的浏览器都没这问题。求解?还要装什么插件吗?
想问是怎么使用的 我把这个插件放到自己写的表格里不行
明叔叔╀ 0
Microsoft Edge 中,文件名会乱码,@_@找不出原因。
江山快手 0
火狐不兼容
这个插件太棒了,以后就不发愁了
♂苦つ儿♀ 0
导出xls,中文乱码
我这里刚测试好的。
不能导出xls文件啊,是什么问题?
试过了,好像是safari浏览器不支持,换chrome就行了,这个有办法兼容吗
cherishtest 0
这个插件不错
PROMULGATOR
微笑向暖ノ安之若素
重庆市江北区
关注作者 (6)
收藏此插件 (65)
我当前jQ币余额:正在获取..
已下载次数:759
所需jQ币:01104人阅读
Djanjo(7)
Web安全(5)
最近在学习django,于是就用django做了一个简单的网站,用来练手,具体功能就是从网上抓取数据,然后放到我的网站上面,但是遇到一个问题就是django无法输出html格式的内容,只能以字符串的形式输出:
data = '&hello world&'
&{{ data }}&
我们目的是输出的是:
hello world
但是结果输出的是:
&hello world&
在网上搜了好久,终于找到解决办法:
对于单个变量使用django的过滤器,告诉Django这个字符串不用进行HTML转义,方法如下:
data | safe
对于一段模板内容可以使用autoescape标签,比如:
{{ data }}
off 的意思是关闭对html的转义,而将off替换成on就表示进行html转义,默认进行html转义
注意:autoescape 具备继承性的,如果在父模版中定义了,则在子模版对应内容部分也存在此属性
我们可能会疑问,django为什么要将这些字符转义,而不是按原本html的内容输出呢?
我们举个例子:
需要用户输入用户名来注册,这个用户输入了用户名为:
type="text/javascript"&alert('hello');&
假设他输入的长度合法,而且django也确实没显式提供什么特殊字符转换方法,那么每次在网页上面显示的时候,岂不是每次都弹出一个窗口,那么不是就很不安全啦。
为了解决这个问题,django默认将所有特殊的字符都转换成在html上面可以显示的内容,而不再包含转义功能!于是,也就出现了上面我想输出而输出而输出不了html的内容。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:81438次
积分:2031
积分:2031
排名:第17366名
原创:113篇
转载:30篇
评论:12条
阅读:3703
(4)(2)(10)(12)(13)(2)(3)(4)(8)(8)(1)(5)(4)(7)(7)(3)(3)(6)(2)(3)(6)(4)(4)(6)(11)(1)(9)匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 php html导出word文档 的文章

 

随机推荐