python输出word内容

python输出word内容,第1张

程序导出word文档方法

将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob、Apache POI、Java2Word、iText等各种方式,以及使用freemarker这样的模板引擎这样的方式。php中也有一些相应的方法,但在python中将web/html内容生成world文档的方法是很少的。其中最不好解决的就是如何将使用js代码异步获取填充的数据,图片导出到word文档中。

1. unoconv

功能:

1.支持将本地html文档转换为docx格式的文档,所以需要先将网页中的html文件保存到本地,再调用unoconv进行转换。转换效果也不错,使用方法非常简单。

\# 安装

sudo apt-get install unoconv

\# 使用

unoconv -f pdf *.odt

unoconv -f doc *.odt

unoconv -f html *.odt

缺点:

1.只能对静态html进行转换,对于页面中有使用ajax异步获取数据的地方也不能转换(主要是要保证从web页面保存下来的html文件中有数据)。

2.只能枯裂对html进行转换,如果页面中有使用echarts,highcharts等绝侍js代码生成的图片,是无法将这些图片转换到word文档中;

3.生成的word文档内容格式不容易控制。

2. python-docx

功能:

1.python-docx是一个可以读写word文档的python库。

使用方法:

1.获取网页中的数据,使用python手动排版添加到word文档中。

from docx import Document

from docx.shared import Inches

document = Document()

document.add_heading('Document Title', 0)

p = document.add_paragraph('A plain paragraph having some '并败吵)

p.add_run('bold').bold = True

p.add_run(' and some ')

p.add_run('italic.').italic = True

document.add_heading('Heading, level 1', level=1)

document.add_paragraph('Intense quote', style='IntenseQuote')

document.add_paragraph(

'first item in unordered list', style='ListBullet'

)

document.add_paragraph(

'first item in ordered list', style='ListNumber'

)

document.add_picture('monty-truth.png', width=Inches(1.25))

table = document.add_table(rows=1, cols=3)

hdr_cells = table.rows[0].cells

hdr_cells[0].text = 'Qty'

hdr_cells[1].text = 'Id'

hdr_cells[2].text = 'Desc'

for item in recordset:

row_cells = table.add_row().cells

row_cells[0].text = str(item.qty)

row_cells[1].text = str(item.id)

row_cells[2].text = item.desc

document.add_page_break()

document.save('demo.docx')

from docx import Document

from docx.shared import Inches

document = Document()

for row in range(9):

t = document.add_table(rows=1,cols=1,style = 'Table Grid')

t.autofit = False #很重要!

w = float(row) / 2.0

t.columns[0].width = Inches(w)

document.save('table-step.docx')

缺点:

1.功能非常弱。有很多限制比如不支持模板等,只能生成简单格式的word文档。

程序导出PDF文档方法

1.pdfkit

功能:

1.wkhtmltopdf主要用于HTML生成PDF。

2.pdfkit是基于wkhtmltopdf的python封装,支持URL,本地文件,文本内容到PDF的转换,其最终还是调用wkhtmltopdf命令。是目前接触到的python生成pdf效果较好的。

优点:

1.wkhtmltopdf:利用webkit内核将HTML转为PDF

webkit是一个高效、开源的浏览器内核,包括Chrome和Safari在内的浏览器都使用了这个内核。Chrome打印当前网页的功能,其中有一个选项就是直接“保存为 PDF”。

2.wkhtmltopdf使用webkit内核的PDF渲染引擎来将HTML页面转换为PDF。高保真,转换质量很好,且使用非常简单。

使用方法:

\# 安装

pip install pdfkit

\# 使用

import pdfkit

pdfkit.from_url('', 'out.pdf')

pdfkit.from_file('test.html', 'out.pdf')

pdfkit.from_string('Hello!', 'out.pdf')

缺点:

1.对使用echarts,highcharts这样的js代码生成的图标无法转换为pdf(因为它的功能主要是将html转换为pdf,而不是将js转换为pdf)。对于纯静态页面的转换效果还是不错的。

2.其他

其他生成pdf的插件还有:weasyprint,reportlab,PyPDF2等,经简单试验都不如pdfkit效果好,且有些用法复杂。

Python文件 *** 作主要有以下几种方式:

打开文件:使用open()函数打开文件,该函数需要指定文件名以及打开文件的模式(例如只读、只写、追加等)。打开文件后,可以使用文件对亮闭象进行读取、写入、关闭等 *** 作。

读取文件:使用文件对象的read()、readline()、readlines()方法来读取文件内容。read()方法可以一次性读取整个文件,readline()方法可以逐行读取文件,readlines()方法可以将文件的所有行读取到一个列表中。

写入文件:使用文件对象的write()方法将数据写入文件。write()方法可以接受字符串作为参数,并将其写入文件。

关闭文件:使用文件对象的close()方法关闭文件。关闭文件后,可以避免占用系统资源。

with语句:使用with语句可以自动管理文件的关闭。with语句创建一个上下文环境,在该环境中打开文件,并在代码块执行完毕后自动关闭文件。

os模块:使用os模块可以进行文件和目录的 *** 作,包括创建、敬磨裂重命名、删除、移动等。os模块还提供了一些游州与文件路径相关的函数,例如join()、split()、abspath()等,可以方便地处理文件路径。

常见的Python文件后缀有:py、pyc、pyo、pyi、pyw、pyd、pyx等。我们知道Python代码在执行时,会先由Python解析器翻译成PyCodeObject对象,俗称字节码(Bytecode),然后交给Python解释器来执行字节码。上述过程中翻译后的字节码是保存在内存中,程序运行结束就没了,而代码没有修改的情况下,每次生成的字节码是一样的,所以每次跑程序都再走一遍翻译字节码的过程有点浪费性能。因此为了提高加载效率,Python在程序执行结束后会把每个文件的字节码写入到硬盘中保存为xxx.pyc文件,这样下一次再执行这个程序时先在目录下找有没有xxx.pyc文件,如档槐纳果有这个对应文件且修改时间和xxx.py文行没件的修改时间一样,就不用再执行翻译成字节码的过程明睁,直接读取xxx.pyc文件执行。其实缓存pyc文件的方式对性能的提升很微小,只有项目文件非常多的时候才能看到显著提升。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8149075.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存