import os

from win32com import client

word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 1
word.DisplayAlerts = 0
doc = word.Documents.Add()
range1 = doc.Range(0,0) #文件起始处
range1.InsertAfter("这是测试第一行\n这是测试第二行\n")
range1.InsertAfter("这是测试第三行\n这是测试第四行\n")
range1.InsertBefore("第一次插入到文件最前方\n")
range1.InsertBefore("再次插入到文件最前方\n")
# cpath = os.path.dirname(__file__)
doc.SaveAs("F:\\pythonBase\\pythonex\\test1.docx")
doc.Close()
word.Quit()

import os

from win32com import client

word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 0
word.DisplayAlerts = 0
# cpath=os.path.dirname(__file__)
doc = word.Documents.Open("F:\\pythonBase\\pythonex\\test1.docx")
print(doc.Content)
doc.Close()
word.Quit()

import os

from win32com import client

word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 0
word.DisplayAlerts = 0
doc = word.Documents.Open("F:\\pythonBase\\pythonex\\test1.docx")
paragraphs = doc.Paragraphs
for p in paragraphs:
text = p.Range.Text.strip()
print(text)
doc.Close()
word.Quit()

import os

from win32com import client

word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 0
word.DisplayAlerts = 0
doc = word.Documents.Open("F:\\pythonBase\\pythonex\\test1.docx")
paragraphs = doc.Paragraphs
print("第一段:" + paragraphs(1).Range.Text.strip())
print("第三段:" + paragraphs(3).Range.Text.strip())
doc.Close()
word.Quit()

import os
import time

from win32com import client
from win32com.client import constants

word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 1
word.DisplayAlerts = 0
doc = word.Documents.Open("F:\\pythonBase\\pythonex\\test1.docx")
paragraphs = doc.Paragraphs
range1 = paragraphs(1).Range #第1段
range1.Style = constants.wdStyleHeading1
range1.Style.Font.Name = "标楷体"
range1.Style.Font.Color = 0xFF0000 #蓝色
range1.Style.Font.Bold = 1 #Italic, Underline, Shadow, Outline

range2 = paragraphs(2).Range #第2段
range2.Style = constants.wdStyleHeading3
range2.ParagraphFormat.Alignment = constants.wdAlignParagraphRight

range3 = paragraphs(3).Range #第3段
range3.Style.Font.Size = "10"
doc.Close()
word.Quit()
time.sleep(3)

import os
from win32com import client

word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 1
word.DisplayAlerts = 0
doc = word.Documents.Open("F:\\pythonBase\\pythonex\\08\\clipgraph.docx")
data = [ ["型号", "尺寸", "颜色", "价格"], ["A8", "5.0英寸", "白色", "8000"],["A10", "5.5 英寸", "金黄", "22000"] ]
paragraphs = doc.Paragraphs #读取所有段落
range1 = paragraphs(4).Range #取第4段的起止范围
table = doc.Tables.Add(range1, 3, 4) #在第4段之前插入一个3行4列表格
for i in range(1,table.Rows.Count+1): #i取值分别为1~3。切记rang()函数的特性
print(i)
# for j in range(1,table.Columns.Count+1): #j取值分别为1~4
# table.Cell(i,j).Range.Text = data[i-1][j-1] #第一次会把data[0][0],即"型号",插入Cell(1,1)
#table.Cell(2,3).Range.Font.Color = 0x0000FF #设置第2行第3列单元格的字体颜色
#doc.Close()
#word.Quit()

import os
from win32com import client

word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 1
word.DisplayAlerts = 0
doc = word.Documents.Open("F:\\pythonBase\\pythonex\\clipgraph.docx")
paragraphs = doc.Paragraphs
range1 = paragraphs(4).Range
range1.InlineShapes.AddPicture(cpath + "F:\\pythonBase\\pythonex\\ch08\\media\\cell.jpg", False, True)
#doc.Close()
#word.Quit()

import os
from win32com import client as client
from win32com.client import constants
word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 1
word.DisplayAlerts = 0
cpath=os.path.dirname(__file__)
doc = word.Documents.Open(cpath + "\\media\\clipgraph.docx")
word.Selection.Find.ClearFormatting()
word.Selection.Find.Replacement.ClearFormatting()
word.Selection.Find.Execute("方法",False,False,False,False,False,True,constants.wdFindContinue,False,"method",constants.wdReplaceAll)
#doc.Close()
#word.Quit()

def getrandom2(n1, n2): #取得2个不重复的随机值
while True:
r1 = random.randint(n1, n2)
r2 = random.randint(n1, n2)
if r1 != r2: #如果两数不相等就跳出,相等则继续取
break
return r1, r2

import os, random
from win32com import client
from win32com.client import constants
word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 1
word.DisplayAlerts = 0 #不显示警告
doc = word.Documents.Add()
range1 = doc.Range(0,0) #文件开头
range1.Style.Font.Size = "16" #字体大小
title = "明星小学营养午餐菜单"
year1 = "2017年8月"
week = ["一","二","三","四","五"]
teacher = ["欧阳怡","翟定国","陈碧山","陈丽娟","郑怡衡","林邓超","朱健政","刘伟明","刘维基","梁银燕"]
rice = ["糙米饭","白米饭","拌面"]
vegetable = ["毛豆白菜","豆芽菜","蛋香时瓜","高丽菜","佛手瓜","酸菜豆包","冬瓜","萝卜海带结","茄汁洋芋","家常豆腐","鲜菇花椰","豆皮三丝","伍彩雪莲","干香根丝","茄汁豆腐","香炒花椰","芹香粉丝","红萝卜","洋葱","青椒"]
meat = ["糖醋排骨","美味大鸡腿","椒盐鱼条","香菇肉燥","宫保鸡丁","香卤腿排","梅干绞肉","香酥鱼丁","条瓜烧鸡","时瓜肉丝","海结卤肉","葱烧鸡","柳叶鱼","咖哩绞肉","笋香鸡","沙茶猪柳","五香棒腿","三杯鸡丁","海结猪柳","茄汁鸡丁"]
soup = ["蛋香木须汤","味噌海芽汤","绿豆汤","榨菜肉丝汤","姜丝海芽汤","枸杞爱玉汤","冬菜蛋花汤","冬瓜西米露","紫菜蛋花汤","蛋香木须汤"]
date1= 1 #开始日期为1日
weekday = 2 #开始日期为星期六

while weekday < 6 and date1 < 31: #周一到周五及30日前才制作菜单
range1.InsertAfter(title + "\n")
range1.InsertAfter("日期:" + year1 + str(date1) + "日 (星期" + week[weekday-1] + ")\n")
range1.InsertAfter("制作者:" + teacher[random.randint(0,9)] + "老师\n") #10位老师中随机选一位
range1.InsertAfter("今日菜单:\n")
range1.InsertAfter("一、" + rice[random.randint(0,2)] + "\n") #取1个随机数作为主食列表下标
rand1, rand2 = getrandom2(0,19) #取得两个随机数,作为菜品列表下标
range1.InsertAfter("二、" + vegetable[rand1] + "\n")
range1.InsertAfter("三、" + vegetable[rand2] + "\n")
rand1, rand2 = getrandom2(0,19) #重取两个随机数,作为肉品列表下标
range1.InsertAfter("四、" + meat[rand1] + "\n")
range1.InsertAfter("五、" + meat[rand2] + "\n")
range1.InsertAfter("六、" + soup[random.randint(0,9)] + "\n") #取一个随机数,作为汤品列表下标
range1.Collapse(constants.wdCollapseEnd) #移到range尾
range1.InsertBreak(constants.wdSectionBreakNextPage) #换页
weekday += 1 #星期加1
date1 += 1 #日期加1
if weekday == 6: #如果是星期六
weekday = 1 #设为星期一
date1 += 2 #日期加2(星期六及星期日)

cpath=os.path.dirname(__file__)
doc.SaveAs(cpath + "\\media\\food.docx") #获取文件保存路径并把文件保存为food.docx
#doc.Close()
#word.Quit()

import os
from win32com import client
from win32com.client import constants
word = client.gencache.EnsureDispatch('Word.Application')
word.Visible = 0
word.DisplayAlerts = 0
runpath = os.path.dirname(__file__) + "\\replace" #获取replace文件夹的路径
tree = os.walk(runpath) #取得目录树
print("所有 Word 文件:")
for dirname, subdir, files in tree:
allfiles = []
for file in files: # 取得所有.docx .doc文件,存入allfiles列表中
ext = file.split(".")[-1] #取得文件名后缀
if ext=="docx" or ext=="doc": #取得所有.docx .doc文件
allfiles.append(dirname + '\\' + file) #加入allfiles列表

if len(allfiles) > 0: #如果有符合条件的文件
for dfile in allfiles:
print(dfile)
doc = word.Documents.Open(dfile) #打开文件
word.Selection.Find.ClearFormatting()
word.Selection.Find.Replacement.ClearFormatting()
word.Selection.Find.Execute("方法",False,False,False,False,False,True,constants.wdFindContinue,False,"method",constants.wdReplaceAll)
doc.Close()
word.Quit()