作者kmx (星野殘紅)
看板Python
標題[問題] 如何將目前已開啟Excel檔另存新檔
時間Sun Feb 6 16:02:25 2022
各位好,小弟初學python
目的是想要把公司ERP內的週期性報表,自動轉出excel檔,目前是
用很簡陋的pyaotugui控制滑鼠、鍵盤的功能,取代滑鼠點點點的
重複性工作
目前弄到把ERP內資料轉出EXCEL並開啟後,想要另存到指定
的資料夾和指定檔名,想要用openpyxl之類的指令,把ERP轉出
完自動開啟的EXCEL檔另存
但發現好像openpyxl都無法操作已開啟的excel?
看了大部分的教學,都是操作現存的excel、或是已經有的excel
沒有教"已開啟中"的excel如何操作(我也只需要可另存新檔)
看到好像有人說xlwings,但我研究了一下也不太清楚
想請問版上各位有無解決方式
目前另存新檔還是用控制滑鼠、鍵盤的方式點點點,有時會失效
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.230.224.99 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1644134547.A.92B.html
1F:推 s0914714: win32 不然就是關檔->開檔->另存新檔 02/06 17:01
2F:推 ese953130: xlwing 的作法bk=xw.books[“檔名”](已開啟檔案才可 02/06 18:41
3F:→ ese953130: 以用不然會報錯) bk.save(“要儲存的路徑/檔名”) 02/06 18:41
4F:推 s0914714: 傳送另存新檔熱鍵的鍵盤訊息給窗口也行 02/06 20:19
感謝兩位分享方式!
※ 編輯: kmx (125.230.224.99 臺灣), 02/06/2022 22:48:57
5F:推 woogee: 先pip install pywin32 02/09 17:04
6F:→ woogee: import win32com.client 02/09 17:05
7F:→ woogee: try: 02/09 17:06
8F:→ woogee: excel = win32com.client.GetActiveObject("Excel.Applica 02/09 17:06
9F:→ woogee: tion") 02/09 17:06
10F:→ woogee: excel.Application.ActiveWorkbook.SaveAs("D:\\b.xlsx") 02/09 17:07
11F:→ woogee: excel.Application.Quit() 02/09 17:07
12F:→ woogee: except: 02/09 17:07
13F:→ woogee: ... 02/09 17:08
14F:→ woogee: 這樣可以直接控制已開啟的Excel去另存新檔到D槽存為b.xlsx 02/09 17:08
感謝w大,我試試看!
※ 編輯: kmx (125.230.224.99 臺灣), 02/09/2022 19:20:15
15F:推 crm123: import xlwings as xw 02/10 15:48
16F:→ crm123: Wa = xw.books.active 02/10 15:49
17F:→ crm123: If wa.name =‘Book1’ : 02/10 15:49
18F:→ crm123: wa.save(file_path) 02/10 15:50
19F:→ crm123: app = xw.apps.active 02/10 15:50
20F:→ crm123: app.kills() 02/10 15:50
21F:推 lambo: 你都用pyaotugui 何不直接開啟Excel檔然後ctrl+s? 02/13 22:47
22F:→ lambo: 如果另存新檔會失效,不然就先點工作列讓視窗保持focus? 02/13 22:49