安装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文档内容
图片.png
图片.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文档------------
本内容将持续更新,敬请期待。。。。