python-dox 总结
1 .字体设置
from docx import Document
from docx.oxml.ns import qn#设置字体
document=Document()
#document=Document(r'./scan.docx')
document.styles['Normal'].font.name = u'宋体'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
document.add_paragraph('APPSACN漏洞级别:分为高危、中危、低危、参考等四级',style='List Bullet')
document.save("test.docx")
代码遗留问题,针对新建的文件字体设置有效,追加的文档就失效。暂时还没有想到怎么解决。有大佬解决的留下评论。
2.页脚设置
document.sections[0].footer.paragraphs[0].text= '\t这里是页脚文字\t'
3.居中设置
center=document.add_heading('安全扫描平台安全评估报告',0)#数字为添加下划线
paragraph_format =center.paragraph_format
paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
4,表格样式,更改style 风格即可, 可参考链接https://blog.csdn.net/xtfge0915/article/details/83480120
document.add_table(3,4,style='Medium Grid 1 Accent 1')
5 表格数据渲染方法一 ( 缺点数据较多时写入速度慢)
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().cellsrow_cells[0].text = str(item.qty)row_cells[1].text = str(item.id)row_cells[2].text = item.desc
6,表格数据渲染方法一二 解决效率问题,一次性插入数据。后续优化问题表头第一行标题添加进去的
table = document.add_table(rows=int(count)+1, cols=3, style="Medium Grid 1 Accent 1")
table_cells = table._cells
a=(('QTY',"Id",'Desc'),)#单独写的一行,单独生成表格的第一行,没找到更好实现方式生成第一行标题
TASK=-1
recordset=a+recordset
if int(count)>0:for item in recordset:TASK+=1row_cells = table_cells[TASK * 3:(TASK + 1) * 3]row_cells[0].text = str(item.qty)row_cells[1].text = str(item.id) row_cells[2].text = item.desc
7:修改表格字体设置,表格生成完毕后 调用此函数即可
def change_size(table):# 修改字体for row in table.rows:for cell in row.cells:for paragraph in cell.paragraphs:for run in paragraph.runs:run.font.name = '宋体' # 英文字体设置run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
8:给world添加水印,本人找了很久没有找到利用python给word生成水印的方法。实现方式通过python调用java实现的。java添加水印能够实现。
def WaterMark(jar_path,text,docx_path,save_path,font):"""基本的开发流程如下:①、使用jpype开启jvm②、加载java类③、调用java方法④、关闭jvm(不是真正意义上的关闭,卸载之前加载的类)"""# ①、使用jpype开启虚拟机(在开启jvm之前要加载类路径)# 加载刚才打包的jar文件jarpath = os.path.join(os.path.abspath("."),jar_path )# 获取jvm.dll 的文件路径jvmPath = jpype.getDefaultJVMPath()# 开启jvmif not jpype.isJVMStarted():#这个判断非常重要,因为JVM在一个进程内就会自动关闭,后面在调用就会报错try:jpype.startJVM(jvmPath,"-ea", "-Djava.class.path=%s" % (jarpath))except:pass# ②、加载java类(参数是java的长类名)javaClass = jpype.JClass("waterMark.WaterMarkUtil")#参数java类名。# ③、调用java方法javaClass.InsertTextWatermark
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
