我有一張excel表的sheet1單元格A1中的資料,每間隔1分鐘就會自動更新一次資料。現在,我想通過PYTHON自動獲取每次更新的資料,并且保存下來。PS:這張excel表是一直處于打開使用狀態的。
請問具體應該如何寫代碼?期待各位大俠的幫助,感謝!
uj5u.com熱心網友回復:
只要保存了, 就能讀到資料。 做個例外判斷即可,以免正在保存的時候,讀檔案出錯。
from openpyxl import load_workbook
from time import sleep
# 這個回圈按需改
for i in range(10):
try:
wb = load_workbook('data/data.xlsx')
sheet_temp = wb[wb.sheetnames[0]]
print(sheet_temp['A1'].value)
wb.close()
except:
pass
# 這個時間按需改
sleep(5)
uj5u.com熱心網友回復:
先感謝您的幫助。但是,此代碼只能獲取此A1單元格最開始的資料。此后這A1單元格的資料是在不斷更新變化的(ps:這EXCEL作業表必須處于一直打開并運行的狀態),此代碼無法獲取更新后的資料。
希望還能得到您進一步的解答幫助,謝謝!
uj5u.com熱心網友回復:
我試過不斷地改A1的資料,并且保存。都能正常顯示呀。
如果只修改, 不保存, 那就不能用常規方法了。 只能研究 win32 訊息, 直接獲取EXCEL程式的資訊。
uj5u.com熱心網友回復:
我又驗證了一下,目前這個代碼適用于A1單元格每次資料更新后就要保存作業表,這樣就能獲取到最新的資料。但是,我們的實際情況是,這張作業表只是一直處于打開狀態,由于A1單元格資料變化很頻繁,確實無法做到高頻率的保存。請問在不保存作業表的情況下,還有解決方法嗎?謝謝
uj5u.com熱心網友回復:
是的,保存就可以。不保存,就不行。5555555555請問win32是個啥東西?我是個菜鳥,搞不懂,求指點迷津!謝謝
我試過不斷地改A1的資料,并且保存。
都能正常顯示呀。
如果只修改, 不保存, 那就不能用常規方法了。 只能研究 win32 訊息, 直接獲取EXCEL程式的資訊。
uj5u.com熱心網友回復:
簡單解決方法,打開檔案后, 設定 excel 自動保存。
uj5u.com熱心網友回復:
主要是檔案很大,每次保存都會耗費一定時間。而且在保存的程序中,必定影響了其他EXCEL的正常操作!簡單解決方法,打開檔案后, 設定 excel 自動保存。
uj5u.com熱心網友回復:
而且EXCEL的自動保存時間間隔只能設定1分鐘。
主要是檔案很大,每次保存都會耗費一定時間。而且在保存的程序中,必定影響了其他EXCEL的正常操作!
簡單解決方法,打開檔案后, 設定 excel 自動保存。
uj5u.com熱心網友回復:
設定1分鐘的自動保存,還是不行。必須手動保存一下,python代碼才能獲取到資料。
uj5u.com熱心網友回復:
既然是excel一直打開的,可能是用的excel宏的操作吧?不如后臺存多個csv,以保證python能高頻率的獲取動態資料uj5u.com熱心網友回復:
是的,啟用了宏,需要不斷重繪資料。請問有辦法在啟用宏的前提下,獲取資料嗎?
謝謝!
既然是excel一直打開的,可能是用的excel宏的操作吧?不如后臺存多個csv,以保證python能高頻率的獲取動態資料
uj5u.com熱心網友回復:
那就在vba中在重繪資料的情況下,寫一個磁盤文本檔案,以此作為中間站由python不斷讀取它uj5u.com熱心網友回復:
文本檔案以日期時間為檔案名,內容只寫入發生變化的資料,標明這些資料在excel中的行號和列號uj5u.com熱心網友回復:
如果是保存下來,那直接就可由vba完成,python讀取都省了。
uj5u.com熱心網友回復:
方便幫忙寫一個代碼嗎?我是小白,不太懂!目前這個宏是前任留下來的,還不會處理
那就在vba中在重繪資料的情況下,寫一個磁盤文本檔案,以此作為中間站由python不斷讀取它
uj5u.com熱心網友回復:
不知道說的對不,如果是可以,直接用python獲取資料源,不用取excel表中的數,如果非要這個數,還得是要模擬保存,https://blog.csdn.net/weixin_45903952/article/details/105073611
uj5u.com熱心網友回復:
excel重繪的資料在不保存的情況下,python去取比較難你最好在宏上作文章,修改宏代碼,只要在vba里把重繪資料的部分,加個函式把這部分重繪的新資料保存在硬碟中的文本檔案里后,以后對這個檔案無論你怎么折騰都行
uj5u.com熱心網友回復:
如果有資料源,python直接處理源資料更好uj5u.com熱心網友回復:
謝謝你的幫助,我試試看不知道說的對不,如果是可以,直接用python獲取資料源,不用取excel表中的數,如果非要這個數,還得是要模擬保存,
https://blog.csdn.net/weixin_45903952/article/details/105073611
uj5u.com熱心網友回復:
我再研究研究,謝謝啦!excel重繪的資料在不保存的情況下,python去取比較難
你最好在宏上作文章,修改宏代碼,只要在vba里把重繪資料的部分,加個函式把這部分重繪的新資料保存在硬碟中的文本檔案里后,以后對這個檔案無論你怎么折騰都行
uj5u.com熱心網友回復:
來個補充吧,直接讀就可以了,其實可以判斷檔案的sha1,這樣更好,你檔案改變后,sha1 md5 哈西的值會改變,假設改變即讀取
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55672.html
