(二)表格篇(table)
(三)样式篇(style)
选你所需即可。下面开始正文。
最近公司的项目,需要在页面上显示word文件的内容。我找了几个前端写法,都没用明白(因为我前端太渣),用起来简单的要么收费,要么加了水印。那怎么办捏?
docx.paragraphs
就可以获得全部的段落。这是一个可迭代的类型,类似于数组如果我们用
p=docx.paragraphs[0]
就可以直接获得文章中的第一段,而接下来
p.text
就是第一段的全部文字内容。如果我们连贯起来写,代码应该是酱婶滴:
for p in docx.paragraphs: print(p.text)
怎么样,是不是很方便?
p.runs
即可。这同样是个可迭代的类型,可以循环获得每一个run相关的内容,比如alignment(对齐方式),bold(加粗),italic(斜体),text(具体文本内容)等等。
doc.add_paragraph(u'第一段',style=None) doc.add_paragraph(u'第二段',style='Heading 2') p = doc.add_paragraph('') p.add_run('第三段', style=None) p.add_run('123', style="Heading 1 Char") p.add_run('456') p.add_run('789', style="Heading 2 Char")
而对于每一个属性,都可以查看它的类型,这个类型一般在docx中是个枚举类型的常量,放在docx.enum.text这个头文件中。使用方法可以这样:
if p.alignment == WD_PARAGRAPH_ALIGNMENT.CENTER: # todo
当然,我所做的这堆工作,目的其实不仅仅是为了获得文件内容,还要放在页面上展示。有了上面的属性,做起来就简单多了。
html = "" if title in self.paragraph.text and len(self.paragraph.text) < 15: html += " style=\"text-align: center; font-size: 30px\">" elif self.paragraph.alignment == WD_PARAGRAPH_ALIGNMENT.CENTER: html += " style=\"text-align: center; font-size: 15px\">" elif self.paragraph.alignment == WD_PARAGRAPH_ALIGNMENT.RIGHT: html += " style=\"text-align: right; font-size: 15px\">" else: html += " style=\"font-size: 15px\">" html += "%s
" % p
这样其实是用代码活生生地生成了一段html。如果是用jinja模板的框架,可以吧这段html直接通过view传到页面上,然后在页面上使用
{{ paragraph|safe }}
来展示。
p.paragraph_format.element.xml