1. 程式人生 > >PYTHON筆記第八章

PYTHON筆記第八章

import os#匯入系統庫
from win32com import client#匯入WIN32庫中的客戶
from win32com.client import constants#讀入客戶中的常量庫,是用來設格式的
word=client.gencache.EnsureDispatch('Word.Application')#開啟WORD控制代碼
word.Visible=1#開啟的檔案是可見的
word.DisplayAlerts=0#警告是關閉的
cpath=os.path.dirname(__file__)#獲得當前路徑
doc=word.Documents.Open(cpath+"\\clipgraph.docx")#用WORD控制代碼開啟檔案
paragraphs=doc.Paragraphs#讀出每一個段落
range1=paragraphs(1).Range#讀出段落的範圍
range1.Style=constants.wdStyleHeading1#讓這段落的格式是標題1
range1.Style.Font.Name="華文新魏"#然後在標題二的格式上修改字型為楷體
range1.Style.Font.Color=0xFF0000#再修改字型顏色是0XFF0000
range1.Style.Font.Bold=1#最後加修加粗引數為1表示要加粗

range2=paragraphs(2).Range#讀出第二段內容
range2.Style=constants.wdStyleHeading2#第二段內容格式設定為標題2號
#range2.ParagraphFormat.Alignment=constants.wdAlignParagraphRight
#根本就沒有ParagraphFormat這個子類

range3=paragraphs(3).Range#讀出第三段
range3.Style.Font.Size="50"#這段字型改為50SIZE
#doc.Close()
#word.Quit()

import os
from win32com import client as client
from win32com.client import constants
word=client.gencache.EnsureDispatch('Word.Application')#獲WORD控制代碼
word.Visible=1#可見
word.DisplayAlerts=0#關警告(有修改的話關閉時會提示,置0預設確定)
cpath=os.path.dirname(__file__)#獲路徑
doc=word.Documents.Open(cpath+"\\clipgraph.docx")#開檔案
word.Selection.Find.Execute("我是",False,False,False,False,False,True,
     constants.wdFindContinue,False,"XXX",2)#把"我是"改為"method"
    #列舉常量不可用!要直接寫數字:0不替換!1換一次!2無限換
#doc.Close()
#word.Quit()

import os
from win32com import client
word=client.gencache.EnsureDispatch('Word.Application')#開WORD控制代碼
word.Visible=1#可見
word.DisplayAlerts=0#無警告
cpath=os.path.dirname(__file__)#獲路徑
doc=word.Documents.Open(cpath+"\\test1.docx")#開檔案
print(doc.Content)#事實證明直接讀會有錯誤!輸出:這是測試第四行件最前方,不知是什麼
paragraphs=doc.Paragraphs#讀出每一行
for p in paragraphs:#遍歷
    text=p.Range.Text.strip()#獲得此行文字
    print(text)#輸出
    
print("first: "+paragraphs(1).Range.Text.strip())#讀出第一行
print("third: "+paragraphs(3).Range.Text.strip())#讀出第三行

import os
from win32com import client
word=client.gencache.EnsureDispatch('Word.Application')#WORD控制代碼
word.Visible=0#不可見
word.DisplayAlerts=0#不警告
runpath=os.path.dirname(__file__)+"\\replace"#獲得路徑,尾後加上\\replace
tree=os.walk(runpath)#通過在目錄樹中游走輸出在目錄中的檔名,向上或者向下
print("all the word files:")#提示語
for dirname,subdir,files in tree:#讀出樹下的三個元素值
    allfiles=[]#開列表
    for file in files:#遍歷
        ext=file.split(".")[-1]#獲得以.分間的最後一個串,即字尾名
        if ext=="docx" or ext=="doc":#有兩種字尾
            allfiles.append(dirname+'\\'+file)#如果有,就把它加進去
    if len(allfiles)>0:
        for dfile in allfiles:#遍歷每個檔案
            print(dfile)#列印檔案內容
            doc=word.Cocuments.Open(dfile)#然後開啟
            word.Selection.Find.ClearFormatting()#清除活動文件中的所有文字格式和段落格式
            word.Selection.Find.Replacement.ClearFormatting()#清除剪貼版中文字內容格式
            word.Selection.Find.EXECUTE("XXYYXX",False,False,
                False,False,False,True,1,False,"yyxxyy",2)#然後把裡面的XXYYXX改為2
            doc.Close()
word.Quit()
    


import os#系統庫用於讀路徑
from win32com import client#client用於開WORD控制代碼
word=client.gencache.EnsureDispatch('Word.Application')#獲WORD控制代碼
word.Visible=1#可見
word.DisplayAlerts=0#不警告
cpath=os.path.dirname(__file__)#獲路徑
doc=word.Documents.Open(cpath+"\\clipgraph.docx")#開啟檔案
data=[ ["型號","大小","顏色","價格"],
       ["A8","5.0英寸","白色","8000"],
       ["A10","5.5英寸","金黃","22000"]]#開列表
paragraphs=doc.Paragraphs#遍歷
range1=paragraphs(4).Range#獲第四行內容
table=doc.Tables.Add(range1,3,4)#然後把range1的內容改為一個3*4的表格即table
for i in range(1,table.Rows.Count+1):#逐行遍歷,注意結束下標要+1
    for j in range(1,table.Columns.Count+1):#逐列遍歷,注意結束下標要+1
        table.Cell(i,j).Range.Text=data[i-1][j-1]#然後賦值,cell是細胞
table.Cell(2.3).Range.Font.Color=0xFF00FF#然後還可以給字賦色
#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.Add()#創新一個WORD文件控制代碼
range1=doc.Range(0,0)#初始化一個範圍是開頭(第0行第0個字元) 
range1.InsertAfter("這是測試第一行\n這是測試第二行\n")#在文末插入
range1.InsertAfter("這是測試第三行\n這是測試第四行\n")#在文末插入
range1.InsertBefore("第一次插入到檔案最前方\n")#在文首插入
range1.InsertBefore("第二次插入到檔案最前方\n")#在文首插入
cpath=os.path.dirname(__file__)#獲路徑
doc.SaveAs(cpath+"\\test1.docx")#設定資料夾儲存
#doc.Close()
#word.Quit() 


import os
from win32com import 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+"\\clipgraph.docx")
paragraphs=doc.Paragraphs
range1=paragraphs(5).Range#獲得第五行範圍
range1.InlineShapes.AddPicture(cpath+"\\cell.jpg",False,True)#插圖
'''
AddPicture(_FileName_,_LinkToFile_,_SaveWithDocument_ ,_Range_ )
名稱          必需/可選	資料型別    說明
FileName        必需    String	圖片的路徑和檔名。
LinkToFile      可選	    Variant	真,要將圖片連結到建立它的檔案;假,使圖片檔案的獨立副本[預設]
SaveWithDocument可選	    Variant	True則將連結的圖片與文件一起儲存。預設值為 False
Range	        可選	    Variant	圖片置於文字中的位置。如該區域未摺疊,圖片將覆蓋區域,否則插入圖片[預設自動放置]
'''
#doc.Close()
#word.Quit()

#隨機生成選單
def getrandom2(n1,n2):
    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
cpath=os.path.dirname(__file__)
doc=word.Documents.Open(cpath+"\\food.docx")
range1=doc.Range(0,0)
range1.Style.Font.Size="16"
title="明星小學營養午餐選單"
year1="2017年8月"
week=["一","二","三","四","五"]
teacher=['歐陽怡','翟定國','陳碧山','陳麗娟','鄭怡衡','林鄧超','朱健政','劉偉明','劉維基','樑維基','樑銀燕']
rice=['糙米飯','白米飯','拌麵']
vegetable=["	毛豆白菜	"	,"	豆芽菜	"	,"	蛋香時瓜	"	,"	高麗菜	"	,"	佛手瓜	"	,"	酸菜豆包	"	,"	冬瓜	"	,"	蘿蔔海帶結	"	,"	茄汁洋芋	"	,"	家常豆腐	"	,"	鮮菇花椰	"	,"	豆皮三絲	"	,"	伍彩雪蓮	"	,"	幹香根絲	"	,"	茄汁豆腐	"	,"	香炒花椰	"	,"	芹香粉絲	"	,"	紅蘿蔔	"	,"	洋蔥	"	,"	青椒	"	]
meat=["	糖醋排骨	"	,"	美味大雞腿	"	,"	椒鹽魚條	"	,"	香菇肉燥	"	,"	宮保雞丁	"	,"	香滷腿排	"	,"	梅乾絞肉	"	,"	香酥魚丁	"	,"	條瓜燒雞	"	,"	時瓜肉絲	"	,"	海結滷肉	"	,"	蔥燒雞	"	,"	柳葉魚	"	,"	咖哩雞肉	"	,"	筍香雞	"	,"	沙茶豬柳	"	,"	五香棒腿	"	,"	三杯雞丁	"	,"	海結豬柳	"	,"	茄汁雞汁	"	]
soup=["	蛋香木須湯	"	,"	味噌海芽湯	"	,"	綠豆湯	"	,"	榨菜肉絲湯	"	,"	薑絲海芽湯	"	,"	枸杞愛玉湯	"	,"	冬菜蛋花湯	"	,"	冬瓜西米露	"	,"	紫菜蛋花湯	"	,"	蛋香木須湯	"	]
date1=1
weekday=2

while weekday<6 and date1 <31:
    range1.InsertAfter(title+"\n")
    range1.InsertAfter("日期:{}{}日(星期{})\n".format(year1,date1,week[weekday-1]))#此處必須用{}寫法,也不知為何用課本的就報錯
    range1.InsertAfter("maker:"+teacher[random.randint(0,9)]+"teacher\n")
    range1.InsertAfter("今日選單:\n")
    range1.InsertAfter("一、"+rice[random.randint(0,2)]+"\n")
    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.wdSectionBreakNextPage)#換頁句不可用
    weekday+=1
    date1+=1
    if weekday==6:
        weekday=1
        date1+=2

doc.SaveAs(cpath+"\\food.docx")
doc.Close()
word.Quit()