微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 LibreOffice Writer 的表格公式中使用 BeanShell 方法作为函数?

如何解决如何在 LibreOffice Writer 的表格公式中使用 BeanShell 方法作为函数?

我为此问题苦苦挣扎了一段时间,但我无法在线找到任何解决方案。我最接近的是如何编写可在 Calc 公式中使用的 Basic 函数,但由于 Basic 和 BeanShell 是完全不同的语言,我找不到正确的语法/过程来实现后一种语言中的相同功能

在 Writer 中,您可以有一个表格(不是电子表格——只是普通表格),您可以在其中按 F2 在单元格上并输入一些公式,例如=<C2>*<E2> 计算 C2 和 E2 单元格中值的乘积。

我编写了 BeanShell 方法 String amountInWords(String amount,String currency),它将传递的 amount(例如 1,234.59)和 currency(例如“USD”)转换为单词(one thousand two hundred thirty four dollars,fifty nine cents)。现在我想在某些单元格上按 F2 并输入公式,例如 =amountInWords(<Table2.D3>,"USD") 并将上述输出视为单元格内容。不幸的是,我收到了 ** Expression is faulty ** 条消息。

有人可以建议我如何以所描述的方式使用此方法或确认这是不可能的吗?预先非常感谢您!

解决方法

Writer 表格公式比电子表格公式有更多限制。 http://libreoffice-dev.blogspot.com/2019/11/calculations-inside-of-writer-tables.html 中有支持的函数列表。不支持 AFAIK 调用宏。

可能您想要的不是表格而是通过转到插入 -> 对象 -> OLE 对象,在该位置将 Calc 电子表格嵌入到 Writer 文档中。然后将 amountInWords 重写为基本用户定义函数 (UDF)。

如果您必须使用 BeanShell,则编写一个基本 UDF 来加载和调用 BeanShell 方法。或者您可以创建一个 BeanShell Calc 加载项,尽管这更困难,需要 XML 配置文件。对于加载项,使用 Java 编写而不是 BeanShell 可能更容易,因为有更多示例和文档可用。

或者,不是嵌入电子表格,而是在 BeanShell 中创建一个搜索和替换 Writer 宏,以在表中执行任何所需的计算。将宏设置为在某个事件(例如文档打开时)上运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。