Libreoffice - 在打开时自动更新链接?

时间:2017-03-14 14:34:59

标签: python libreoffice dde

我有一个.ods文件,其中包含许多必须自动更新的链接。据我所知,使用宏或libreoffice命令参数没有简单的方法,所以我试图在打开文件时更新所有链接,然后保存文件并退出。

所有链接都是DDE链接,应该能够自动更新(并设置为在编辑>链接中执行此操作),我也在工具>中启用了此功能。选项> Calc>一般>打开时始终更新链接,以及工具>选项> Calc>配方>总是重新计算。 但是,我仍然会在弹出时提示手动更新链接,如果我没有选择更新,链接将不会是最新的。我需要这些DDE链接自动更新,为什么不是这有用吗?

如果那里没有解决方案,我也愿意尝试通过Python更新链接。 Uno是否会与libreoffice合作完成此操作,而不会像openpyxl那样破坏文件中的任何预先存在的图形?

2 个答案:

答案 0 :(得分:0)

API没有提供在打开文件时禁止提示的方法!

我尝试运行StarBasic代码来更新“文档打开”事件上的DDE链接,但问题不断出现。

所以,我猜你运气不好:如果你想要实际值,你必须回答“是”。

[再次将评论发布在OP的问题中作为答案,正如@Jim K所建议的那样]

答案 1 :(得分:0)

尝试此代码,更新CALC文档的DDE链接(无头模式)

<script type="text/javascript" src="inline.bundle.js"></script>
<script type="text/javascript" src="polyfills.bundle.js"></script>
<script type="text/javascript" src="styles.bundle.js"></script>
<script type="text/javascript" src="vendor.bundle.js"></script>
<script type="text/javascript" src="main.bundle.js"></script>

注意:此代码段仅适用于CALC,WRITER使用Sub autoupdate_DDE ' 20170314 ' load library with help function GlobalScope.BasicLibraries.LoadLibrary( "Tools" ) ' get all DDE links of document ' dde_links = ThisComponent.DDELinks ' get array of names ' aEN = dde_links.getElementNames() ' work on every DDE link ' for i = 0 to UBound( aEN() ) xTF = dde_links.getByName( aEN( i ) ) xTF.refresh() Next End Sub 代替DDE链接。

[作为另一个答案提供,以便使用代码格式。在注释结尾添加了单引号字符串,以保留代码着色]