1、必须的库
from docx import Document #新建文档的
from docx.enum.text import WD_ALIGN_PARAGRAPH #对齐
from docx.shared import Pt #磅数 ,P大写
from docx.oxml.ns import qn #中文格式

以上四个每次做docx,用到的库
2、时间库
import time #时间库,对中文格式支持差

转换中文格式
today1=time.strftime(“%Y-%m-%d”,time.localtime()) #获取今日事件,此输出2021-8-19 ,不能带 “年-月 -日”输出
today2=time.strftime(“%Y{y}-%m{m}-%d{d}”,time.localtime()).format(y=’年’,m=’月’,d=’日’) #因time对中文支持不好,所以我们用【】.format,j进行替换

3、wor的基本操作
1) 层次关系:文档document—-段落 paragraph—-段落里的内容run
#新建文档
document=Document() #新建Word文档
#设置整篇文档默认字体
document.styles[‘Normal’].font.name=u’宋体’ #设置整个文档的西文 基础字体样式为宋体
document.styles[‘Normal’].element.rPr.rFonts.set(qn(‘w:eastAsia’),’宋体’) #设置文档的基础中文字体

建立段落
p1=document.add_paragraph() #初始化建立一个自然段
p1.alignment=WD_ALIGN_PARAGRAPH.CENTER # 第一个自然段的对齐方式,居中对齐,没有这段,默认左对齐

在段落里添加内容
run1=p1.add_run(‘关于下达%s产品价格的通知’%(today2)) #第一段添加内容
#设置内容的字体格式
run1.font.name=’微软雅黑’ #设置西文字体 ,字体的设置 是在run 里设置,不是段落里
run1.element.rPr.rFonts.set(qn(‘w:eastAsia’),u’微软雅黑’) #设置中文字体支持

run1.font.size=Pt(21) #字体大小21磅
run1.font.bold=True #字体加粗
p1.space_after=Pt(5) #设置段后间距5磅
p1.space_before=Pt(5) #设置段前间距5磅

完整例子,批量建立文档,要求客户名称不同,时间是新时间,价格输入价格!

  1. from docx import Document #新建文档的
  2. from docx.enum.text import WD_ALIGN_PARAGRAPH #对齐
  3. from docx.shared import Pt #磅数 ,P大写
  4. from docx.oxml.ns import qn #中文格式
  5. #以上四个每次做docx,用到的库
  6. import time #时间库,对中文格式支持差
  7. price=input('请输入今日价格:') #输入价格
  8. company_list=['客户1','客户2','客户3','客户4','客户5','客户6','客户7','客户8'] #客户列表
  9. today1=time.strftime("%Y-%m-%d",time.localtime()) #获取今日事件,按 “年-月 -日”输出
  10. today2=time.strftime("%Y{y}-%m{m}-%d{d}",time.localtime()).format(y='年',m='月',d='日') #因time对中文支持不好,所以我们用【】.format,j进行替换
  11. for i in company_list:
  12. #新建文档,设置文档基础字体
  13. document=Document() #新建Word文档
  14. document.styles['Normal'].font.name=u'宋体' #设置整个文档的西文 基础字体样式为宋体
  15. document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'),'宋体') #设置文档的基础中文字体
  16. #建立第一段
  17. p1=document.add_paragraph() #初始化建立一个自然段
  18. p1.alignment=WD_ALIGN_PARAGRAPH.CENTER # 第一个自然段的对齐方式,居中对齐,没有这段,默认左对齐
  19. run1=p1.add_run('关于下达%s产品价格的通知'%(today2)) #第一段添加内容
  20. run1.font.name='微软雅黑' #设置西文字体 ,字体的设置 是在run 里设置,不是段落里
  21. run1.element.rPr.rFonts.set(qn('w:eastAsia'),u'微软雅黑') #设置中文字体支持
  22. run1.font.size=Pt(21) #字体大小21磅
  23. run1.font.bold=True #字体加粗
  24. p1.space_after=Pt(5) #设置段后间距5磅
  25. p1.space_before=Pt(5) #设置段前间距5磅
  26. #下面是第二段落
  27. p2=document.add_paragraph() #添加第二个段落
  28. # ,对齐方式不设,默认是左对齐
  29. run2=p2.add_run(i+':') #添加段落内容,对客户的称呼
  30. run2.font.name='仿宋_GB2312'
  31. run2.element.rPr.rFonts.set(qn('w:eastAsia'),u'仿宋_GB2312') #设置中文字体支持
  32. run2.font.size=Pt(16)
  33. run2.font.bold=True
  34. #第三段落
  35. p3 = document.add_paragraph() # 添加第3个段落
  36. # ,对齐方式不设,默认是左对齐
  37. run3 = p3.add_run( ' 根据公司安排,为提供优质客户服务,我单位拟定了今日黄金价格为%s元,特此通知。'% price) # 添加段落内容,对客户的称呼
  38. run3.font.name = '仿宋_GB2312'
  39. run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312') # 设置中文字体支持
  40. run3.font.size = Pt(16)
  41. run3.font.bold = True
  42. # 第4段落
  43. p4 = document.add_paragraph() # 添加第3个段落
  44. p4.alignment=WD_ALIGN_PARAGRAPH.RIGHT # 第一个自然段的对齐方式,居中对齐,没有这段,默认左对齐# ,对齐方式不设,默认是左对齐
  45. run4 = p4.add_run(' 联系人:杨威 电话:98746641' ) # 添加段落内容,对客户的称呼
  46. run4.font.name = '仿宋_GB2312'
  47. run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312') # 设置中文字体支持
  48. run4.font.size = Pt(16)
  49. run4.font.bold = True
  50. document.save('%s-价格通知.docx' % i) # 以客户名-价格通知 作为文件名保存