2012-01-23 73 views
0

我使用pyuno來閱讀excel電子表格(在linux上運行)。許多單元格都有涉及addins的公式,顯然這些公式不可用。但是單元值是我想要的。使用uno(openoffice api)打開電子表格*沒有*重新計算

但是當我加載並閱讀工作表時,似乎這些公式正在被評估,因此這些值被錯誤覆蓋。

我已經試過幾件事情,沒有一個是有工作:

  • 組標誌AutomaticCalculation =假MacroExecutionMode = NEVER_EXECUTE在調用desktop.loadComponentFromURL
  • 呼叫document.enableAutomaticCalculation(假)上加載的文件

有什麼建議嗎?

+0

你確定這些值實際存儲?如果他們不是,就沒有辦法做到這一點。 – Marcin

回答

0

如果formluas不是問題,則可以通過處理僅包含值(不是公式)的電子表格副本來規避問題。

要快速實現這一目標,請選擇整個工作表內容,複製特殊粘貼;然後刪除除「值」之外的所有內容。保存到一個新文件中(確保您不覆蓋原始文件或每個公式都將丟失!)。你的腳本應該能夠處理這個文件。

這是一個醜陋的解決方案,因爲必須有一種方法可以做到編程。

+0

簡單就是打開excel,將Calc模式設置爲手動,加載電子表格,然後重新保存。現在它的計算模式將設置爲手動模式,並且OO在加載時會遵守這一模式。但是這打破了使用獨立於Excel的面向對象的目的。如果我在這個範圍內使用excel,我可能會一路走下去,根本不使用OO。 –

0

Calc在加載文檔後尚不支持使用緩存的結果。 Libreoffice Calc現在使用xls文檔的緩存結果。結果也存儲在ods中,但在加載文檔時忽略,並通過編譯和解釋保存的公式來評估公式結果。

有一些計劃也將ods和xlsx添加到這裏,但有很多ods製作者在文件中寫入不正確的結果。所以到現在爲止,唯一的解決方案是隻保存文檔的第二個版本(或者在calc中實現)。

+0

感謝這個信息。只是要清楚:Libreoffice Calc使用xls的存儲值,但不使用xlsx?那麼這也不是一個可行的解決方案。在文件中重新輸入不正確的結果:爲什麼不選擇是否重新計算或使用現有結果?具有諷刺意味的是,MS通常是決定它比用戶知道得更好的人,但在這種情況下,它是給予用戶選擇的人。 –

+0

只是因爲沒有人知道這一點。對於XLSX來說,它可能會變得棘手,但對於ODS計劃,希望很快就會實施。 – moggi

+0

還是不明白 - 爲什麼不給用戶選擇?顯然,開發人員認爲他們比用戶更瞭解xlsx是否「好」 - 並且執行他們的判斷將禁止用戶做出選擇。實現必須是微不足道的 - 只要*不*重新計算。 –

相關問題