iT邦幫忙

0

python的openpyxl在修改完.xlsm文件內容後會出現文件無法再打開

  • 分享至 

  • xImage

弄不清楚原因有時候修改完後存檔可以正常
但有時候修改完後再去開啟檔案竟無法開啟了
必需把這個.xlsm文件改附檔名為.xlsx才可以正常開啟
而且你會發現他真的也有按照我們在代碼中的功能去修改成功並存檔
只是存檔後這個.xlsm文件就無法打開了
而我的openpyxl版本是 3.0.10
而我是用Anaconda3的所以最新版也只能到 3.0.10
但是openpyxl官方的版本已經到3.0.12版了
是不是只要使用的是conda的話就無法安裝使用3.0.12版?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
kennex_x
iT邦新手 4 級 ‧ 2023-09-14 10:07:52

Dears,

我是用Anaconda3的所以最新版也只能到 3.0.10
但是openpyxl官方的版本已經到3.0.12版了
是不是只要使用的是conda的話就無法安裝使用3.0.12版?

Anaconda 應該只是個IDLE編譯器,理論上你如果想要更新openpyxl的套件版本應該是都可以的。

# Command
pip install openpyxl --upgrade

必需把這個.xlsm文件改附檔名為.xlsx才可以正常開啟
而且你會發現他真的也有按照我們在代碼中的功能去修改成功並存檔
只是存檔後這個.xlsm文件就無法打開了

建議你可以把你原本的.xlsm檔案做一個備份,然後複製一份出來針對複製的文件進行編譯,最後在另存成.xlsx .csv就可以達到你要的效果。

fdfanmo iT邦新手 5 級 ‧ 2023-09-15 07:53:16 檢舉

謝謝幫忙~原來還可以透過pip install openpyxl --upgrade升級到3.12.0版.但是說的可以把你原本的.xlsm檔案做一個備份,然後複製一份出來針對複製的文件進行編譯,最後在另存成.xlsx .csv就可以達到你要的效果。我不太懂這個意思.因為我就是希望存檔成.xlsm這樣才可以用到裡面的巨集功能.如果存檔成.xlsx .csv那就沒有巨集效果了.如果不需要巨集效果.我直接存檔成.xlsx是一樣效果了?

kennex_x iT邦新手 4 級 ‧ 2023-09-18 09:36:49 檢舉

應該說你透過Python編譯過後,存成.xlsx .csv等格式也是為了要讓Excel可以識讀Python編譯過後的檔案而已。是為了你後續可能要用excel做任何處理不論是畫圖還是其他處理都會比較方便,至於你說的.xlsm的格式你可以理解理解Python跟Excel兩個是不同的編譯器,兩個能夠識讀的語法當然也會有所不同,建議你存成.xlsx .csv等格式也是為了要讓Excel可以識讀Python編譯過後的檔案而已。

fdfanmo iT邦新手 5 級 ‧ 2023-09-19 08:04:40 檢舉

謝謝回覆.但是如果是這樣的話我直接將檔案存成.xlsx檔案就可以了.我有爬文過會出現這種情況其實是因為openpyxl庫對.xlsm支援性較差的關係.而因為我需要在這個.xlsx中用到vbs的功能.所以才需將檔案存檔成.xlsm檔案.也就是我測試過如果檔案是.xlsx他不會有這個問題產生.

我要發表回答

立即登入回答