python-docx入门体验001

安装python-docx:

 pip install python-docx或者
 pip install user python-docx

如果安装失败可以用pycharm安装,如果有错误,可以根据错误信息提示逐步解决。

新建一个文档:

document=docx.Document()

保存文档:

document.save('新建文档.docx')

插入一个标题:

p=document.add_heading('水调歌头·明月几时有',level=0)
level=0表示0级标题
level=1表示1级标题
level可以取值0到9

插入一个段落:

p=document.add_paragraph("[宋] 苏轼")

向段落追加内容:

run=p.add_run('[宋] 苏轼 ')

插入图片:

document.add_picture('1.jpg', width=Inches(8))
                  width=Inches(8)设置图片大小

设置字体名称:

run.font.name="宋体"
run._element.rPr.rFonts.set(qn('w:eastAsia'),"宋体")
这两个都设置字体名称才会生效

设置字体颜色:

run.font.color.rgb=RGBColor(0,1,2)
RGBColor(0,1,2)里面有三个参数,取值范围均为0-255

设置字体大小:

run.font.size=Pt(24)

补充:获取系统字体列表功能(这个需要安装wxpython库,

安装方法:pip install wxpython
import wx
ziti=[]
def ziti-name():
 aaa =wx.App(False)
 e = wx.FontEnumerator()
 fontList = e.GetFacenames()
 for i in fontList:
           ziti.append(i)

通过上述内容我们可以创建一个如下所示的文档:
程序打开后的界面,以及生成的word文档内容


python-docx入门体验001_第1张图片
图片.png

python-docx入门体验001_第2张图片
图片.png

源码展示:

#创建并写入word文档
import docx
import os
import time
from random import randint
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Inches
from docx.shared import RGBColor
from  docx.shared import  Pt
from docx.oxml.ns import qn
from tkinter import *
import tkinter as tk
import wx
from wx import  FontEnumerator 
import os
#-----------------获取系统字体名称--------------------------
ziti=[]
aaa =wx.App(False)
e = wx.FontEnumerator()
fontList = e.GetFacenames()
for i in fontList:
            ziti.append(i)
#-----------------获取系统字体名称--------------------------

#---------生成word文档功能------------------------------------    
def makedoc():
    #创建内存中的word文档对象
    file=docx.Document(docx=os.path.join(os.getcwd(), 'default.docx'))
    #写入若干段落
    #标题需要大号字体
    p=file.add_heading('水调歌头·明月几时有',level=0)
    #作者名称,需要小标题
    p=file.add_paragraph("[宋] 苏轼")
    #备注,需要灰色字体。
    p=file.add_paragraph()
    run=p.add_run('丙辰中秋,欢饮达旦,大醉,作此篇。兼怀子由。 ')
    run.bold = False
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)
    run.font.color.rgb=RGBColor(10,20,255)
    
    #正文,需要居中
    p=file.add_paragraph()
    run=p.add_run('明月几时有,把酒问青天。 ')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)
    

    p=file.add_paragraph()
    run=p.add_run('不知天上宫阙,今夕是何年? ')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)

    p=file.add_paragraph()
    run=p.add_run('实我欲乘风归去,又恐琼楼玉宇,')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)
    
    p=file.add_paragraph()
    run=p.add_run('高处不胜寒。 ')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)
    
    p=file.add_paragraph()
    run=p.add_run('起舞弄清影,何似在人间!')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)

    p=file.add_paragraph()
    #空白
    p=file.add_paragraph(' ')
    run=p.add_run('转朱阁,低绮户,照无眠。 ')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)

    p=file.add_paragraph()
    run=p.add_run('不应有恨,何事长向别时圆?')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)
    
    p=file.add_paragraph()
    run=p.add_run('不人有悲欢离合,月有阴晴圆缺, ')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)
    
    run=p.add_run('不此事古难全。 ')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)
    
    p=file.add_paragraph()
    run=p.add_run('不但愿人长久,千里共婵娟。 ')
    run.bold = True
    run.font.name="hakuyoxingshu7000"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), "hakuyoxingshu7000")
    run.font.size=Pt(24)
    #保存
    #p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
    #文本颜色
    p=file.add_paragraph()
    for i in range(0,len(ziti)):
        color=(randint(0,255) for _ in range(3))
        run=p.add_run('人有悲欢离合,月有阴晴圆缺, \n')
        run.bold = True
        run.font.name=ziti[i]
        run.font.size=Pt(24)
        run._element.rPr.rFonts.set(qn('w:eastAsia'), ziti[i])
        run.font.color.rgb=RGBColor(*color)
    file.add_picture('1.jpg', width=Inches(8))
    name=str(time.strftime('%Y%m%d%H%M%S'))+"文档.docx"
    file.save(name)
    if var.get()==1:
        os.startfile(name)
    else:
        pass
#---------生成word文档功能------------------------------------    

#--------创建一个窗体程序,用于点击按钮来生成docx文档------------
root=Tk()
#创建一个窗体程序
#窗体标题
root.title("word文档生成工具,请提前把图片上传至图片文件夹")
#窗体大小
root.geometry('450x100')
#用于判断复选框是否被选中
var=tk.IntVar()
#复选框
condition=Checkbutton(root, text="生成文档后确定是否打开文档", variable=var)
condition.grid(row=0,column=1,pady=10)
#按钮
button=Button(root,width=30,text='点击开始生成',height=3,command=makedoc)
button.grid(row=0,column=0,pady=10,padx=10)
mainloop()
#--------创建一个窗体程序,用于点击按钮来生成docx文档------------

本内容将持续更新,敬请期待。。。。

你可能感兴趣的:(python-docx入门体验001)