WPS 重要API(表格部分) 開(kāi)始 簡(jiǎn)介 本文中所有的測(cè)試都是在Python 3.8.5的環(huán)境中進(jìn)行實(shí)現(xiàn)的,,IDE為Pycharm 引用的庫(kù)主要是Pywin32,通過(guò)該庫(kù)直接調(diào)用WPS提供的開(kāi)發(fā)API,,因此必須在計(jì)算機(jī)上安裝WPS,,遷移時(shí)記得在目標(biāo)主機(jī)上安裝需要的依賴庫(kù)(當(dāng)然也可以直接打包成exe) 由于這種方式直接就是操縱WPS,因此完全可以用一樣的方式去調(diào)用Excel,,但需要根據(jù)Office官方提供的二次開(kāi)發(fā)庫(kù)做一小部分修改(遷移幅度應(yīng)該不大,,因?yàn)檫@其間具有一整套API標(biāo)準(zhǔn)) import win32com.client # 打開(kāi)wps的表格et et = win32com.client.Dispatch("Ket.Application") # et.Visible = True # 確定ET是否可見(jiàn) file = r'E:\python\xlings練習(xí)\物資0#臺(tái)賬模板表1.xlsx' # 打開(kāi)wps表格文件 wb = et.Workbooks.Open(file) # 新建一個(gè)wps工作簿 # wb = et.Workbooks.Add() # 打開(kāi)wps表格文件中的第一張表 sht = wb.Worksheets(1) # 修改單元格的內(nèi)容 sht.Cells(1, 1).Value = '1112' # 保存文件 另存為命令為workbook.SaveAs() wb.Save() # 關(guān)閉文件 wb.Close() # 退出程序 et.Quit() ———————————————— 版權(quán)聲明:本文為CSDN博主「ruoshui101」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明,。 原文鏈接:https://blog.csdn.net/ruoshui101/article/details/109512090 快速測(cè)試 導(dǎo)入庫(kù) # 必須引入client,直接引入win32com可能報(bào)錯(cuò) import win32com.client 聲明application(加載wps的表格) # 實(shí)際上測(cè)試excel時(shí)也可以直接這樣做 application = win32com.client.Dispatch('Excel.Application') 打開(kāi)WPS文件 # Path指的是本地表格文件的路徑,,比如: # Path = r"c:\Users\Aine\Desktop\a.xlsx" # 通過(guò)Win32的方式并不限制xls和xlsx(因?yàn)椴僮魇莣ps在做) workbook = application.Workbooks.Open(Path) 讀取表格文件中的表 # Sheet指的就是表名(注意不是文件名) worksheet = workbook.Worksheets(Sheet) 修改單元格的內(nèi)容 worksheet.Cells(1, 1).Value = 'Hello World' 修改表名稱 worksheet.Name = 'MySheet' 保存并退出 # Path是指要將文件保存到哪一個(gè)位置 worksheet.SaveAs(Path) 操作完成后退出表格文件 # 注意,,此處退出的是文件,而不是WPS程序 # 相當(dāng)于在WPS中關(guān)閉了文件 # 如果操作完表格不關(guān)閉文件,,極有可能會(huì)造成文件無(wú)法打開(kāi) workbook.Close() 最后一定要記得退出ET(表格) application.Quit() 流程概況 加載Application 通過(guò)Application獲取Workbook 通過(guò)Workbook的Worksheets獲取Worksheet 根據(jù)獲取到的表對(duì)數(shù)據(jù)進(jìn)行操作 保存修改/另存為 關(guān)閉Workbook(文件) 關(guān)閉Application(ET) 重要API Application 參考 WPS開(kāi)放文檔 Application相當(dāng)于WPS中表格的主程序(也稱為et),,在Python + Pywin32中,,首先要通過(guò)Dispatch加載程序 重要方法 FindFile和GetOpenFilename(打開(kāi)文件對(duì)話框) 參考信息(FindFile) 參考信息(GetOpenFilename) # FindFile方法 # 該方法屬于Application對(duì)象的方法,調(diào)用后會(huì)前臺(tái)顯示W(wǎng)PS界面,,并彈出打開(kāi)文件對(duì)話框,。 # 注意,該對(duì)話框不會(huì)返回打開(kāi)文件的路徑,,但會(huì)返回是否打開(kāi)成功 # 當(dāng)選擇了一個(gè)文件,,會(huì)在前臺(tái)打開(kāi)該文件 Application.FindFile() # GetOpenFilename方法 # 和FindFile方法不同,這個(gè)方法并不會(huì)前臺(tái)打開(kāi)文件,,而是彈出一個(gè)打開(kāi)文件對(duì)話框 # 該方法返回的值是文件的全路徑 # 通常有需要的情況下是使用GetOpenFilename方法 Application.GetOpenFilename() GetSaveAsFilename(彈出另存為對(duì)話框) 參考信息 # GetSaveAsFilename方法 # 該方法和GetOpenFilename類似,,都不會(huì)真正的進(jìn)行另存為操作,而是返回用戶選擇的全路徑 Application.GetSaveAsFilename() InputBox(彈出一個(gè)接受用戶輸入的對(duì)話框) 參考信息 # 該方法會(huì)彈出一個(gè)包含一個(gè)文本框的對(duì)話框,,并返回用戶的輸入 # 該文本框可以接受多種數(shù)值,,也可以指定其標(biāo)題、初始值,、位置以及返回值類型 # 具體參數(shù)參考官方文檔 ↑↑↑ Application.InputBox("請(qǐng)輸入密碼","警告","123456") Run和Wait 參考消息(Run) 參考消息(Wait) # Run方法用于運(yùn)行一個(gè)宏或調(diào)用一個(gè)VB程序 # 注意,,個(gè)人版一般是不支持宏調(diào)用的 # Wait方法用于暫停運(yùn)行宏 Application.Run(要運(yùn)行的宏) # Wait會(huì)暫停ET的一切操作,當(dāng)然不會(huì)暫停打印和重新計(jì)算 # 傳入的值是必須的,,含義是下一次繼續(xù)運(yùn)行的時(shí)間,,比如Wait("12:20:00") Application.Wait(繼續(xù)運(yùn)行的時(shí)間) 當(dāng)然也可以暫停運(yùn)行指定的時(shí)間,比如十分鐘(官方例程) let now = new Date() let seconds = now.getTime() now.setTime(seconds + 1000 * 10) Application.Wait(now.toLocaleString()) Quit 參考信息 # Quit幾乎是最需要但最容易忘記的方法,,它負(fù)責(zé)退出ET程序,,注意,該方法要在退出表格文件之后執(zhí)行 # 另外,,如果有未保存的Workbook,,ET會(huì)彈出對(duì)話框詢問(wèn)用戶是否關(guān)閉,可以通過(guò)將Application中的DisplayAlerts設(shè)置為False(不顯示信息,,會(huì)直接不保存退出) Application.Quit() 重要屬性 ActivePrinter(獲取/設(shè)置打印機(jī)) # String類型 Application.ActivePrinter Build(獲取ET內(nèi)部版本號(hào)) Application.Build DisplayFullScreen(是否全屏) # 指示ET當(dāng)前是否為全屏狀態(tài),,可讀寫(xiě)(True 全屏; FaLse 非全屏) Application.DisplayFullScreen EnableSound(是否允許發(fā)聲) # 該屬性指示ET是否可以發(fā)出聲音,,Boolean,,可讀寫(xiě) Application.EnableSound HighQualityModeForGraphics(高質(zhì)量打印圖形) # Boolean Application.HighQualityModeForGraphics Hinstance(獲取ET的句柄) # 只讀 Application.Hinstance OperatingSystem(獲取操作系統(tǒng)版本) # 只讀 Application.OperatingSystem Path(獲取WPS所在目錄) # 只讀 Application.Path PrintCommunication(測(cè)試打印機(jī)可達(dá)性) Application.PrintCommunication Ready(ET是否就緒) # 判斷ET是否準(zhǔn)備就緒 Application.Ready ScreenUpdating(屏幕更新) # 一般設(shè)置為T(mén)rue,如果需要加快宏(包括Py腳本)運(yùn)行,,可以暫時(shí)設(shè)置為False Application.ScreenUpdating StatusBar(設(shè)置狀態(tài)欄文字) # 可以獲取和設(shè)置ET下方狀態(tài)欄的文本 Application.StatusBar UserControl (判斷窗口是否由用戶打開(kāi)) # 如果用戶創(chuàng)建或者ET可見(jiàn),,該值為T(mén)rue,如果以代碼方式打開(kāi)切應(yīng)用程序隱藏,,該值為False Application.UserControl UserName (獲取系統(tǒng)用戶名) Application.UserName Version(ET版本號(hào)) Application.Version Visible(是否可見(jiàn)) # 確定ET是否可見(jiàn)(一般不用設(shè)置,,如果設(shè)置可能造成運(yùn)行時(shí)閃一下屏) Application.Visible Workbooks(打開(kāi)的工作表) # 最重要的屬性之一,代表所有打開(kāi)的ET文件 Application.Workbooks # 可以通過(guò)它調(diào)取Open方法來(lái)打開(kāi)ET文件 workbook = application.Workbooks.Open(Path) Worksheets(Sheets集合) # 代表Sheets集合 # 對(duì)于Application對(duì)象來(lái)說(shuō),,該屬性代表活動(dòng)工作簿(文件)中的所有工作表(sheet) Application.Worksheets Workbook 參考 WPS開(kāi)放文檔 Workbook相當(dāng)于在ET中打開(kāi)的一個(gè)文件,,注意是一個(gè)文件而不是文件中的表格 Workbook對(duì)象一般是由打開(kāi)文件產(chǎn)生的,,當(dāng)然這不唯一 重要方法 PrintOut(打印文檔) PrintOut可用的參數(shù)很多,并且都是可選參數(shù),,可用控制打印的起始頁(yè),、終止頁(yè)、份數(shù),、是否調(diào)用打印預(yù)覽(默認(rèn)False),、活動(dòng)的打印機(jī)名、是否打印到文件,、是否逐份打印,、是否忽略打印區(qū)域并打印整個(gè)文檔和區(qū)域語(yǔ)言 Workbook.PrintOut(起始頁(yè), 終止頁(yè), 份數(shù), 打印預(yù)覽, 活動(dòng)的打印機(jī), 是否打印到文件, 逐份打印, 打印到文件的位置, 是否打印整個(gè)對(duì)象, 區(qū)域語(yǔ)言) Save(保存文件) 保存對(duì)指定工作簿所做的更改 Workbook.Save() SaveAs(另存為文件) 另存文檔到指定位置 參數(shù)很多,比較常用的一般是Filename(保存到),、FileFormat(保存格式) Workbook.SaveAs(文件路徑,文件格式...) Close(關(guān)閉工作簿) 一定記得用完關(guān)掉,關(guān)掉工作簿之前要記得保存 雖然具有參數(shù),,但一般不需要傳參 SendMail(發(fā)送郵件) 這種方式當(dāng)然可以使用,,但如果想要直接后臺(tái)發(fā)送,完全可以使用Python的yagmail庫(kù),,一般的只需要兩行代碼就完成發(fā)送 Workbook.SendMail(收件人,主題,是否請(qǐng)求返回收件人,區(qū)域語(yǔ)言) XmlImport(XML轉(zhuǎn)XLS/XLSX) 實(shí)際上是導(dǎo)入Xml文件導(dǎo)入到工作表中,,真實(shí)現(xiàn)轉(zhuǎn)換只需要保存即可 Workbook.XmlImport(URL/UNC路徑,XmlMap架構(gòu)映射) 重要屬性 FullName(打開(kāi)的工作簿的全路徑) 一般用來(lái)獲取當(dāng)前打開(kāi)文件的全路徑 Password(如果打開(kāi)工作簿需要密碼,在此處設(shè)置) # 一般也用不上,,但也不是不可能 Workbook.Password() ReadOnly(判斷打開(kāi)的文件是否是只讀的) 只讀狀態(tài)一般是因?yàn)橐呀?jīng)打開(kāi)了 也有可能是之前通過(guò)程序打開(kāi)但是沒(méi)有進(jìn)行關(guān)閉(.Close()方法) Saved (文件是否保存) 可以根據(jù)此屬性判斷文件是否已經(jīng)保存,,防止數(shù)據(jù)丟失 Worksheets(工作簿中所有的工作表) 一般都是通過(guò)這種方式來(lái)獲取Sheets對(duì)象,灰常重要 Workbooks 重要方法 Add (新建工作表) Open(打開(kāi)工作表) Close (關(guān)閉對(duì)象) OpenDatabase(打開(kāi)數(shù)據(jù)庫(kù)) OpenText(打開(kāi)文本文件) OpenXML(打開(kāi)XML) 重要屬性 Count(獲取工作表的數(shù)量) ———————————————— 版權(quán)聲明:本文為CSDN博主「TineAine」的原創(chuàng)文章,,遵循CC 4.0 BY-SA版權(quán)協(xié)議,,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/tineaine/article/details/108127834 |
|