如何在 LibreOffice Writer 的 table 公式中使用 BeanShell 方法作为函数?
How to use BeanShell method in LibreOffice Writer's table formula as function?
我在这个问题上苦苦挣扎了一段时间,但我无法在线找到任何解决方案。我得到的最接近的是如何编写可以在 Calc 的公式中使用的 Basic 函数,但是由于 Basic 和 BeanShell 是完全不同的语言,所以我找不到合适的 syntax/procedure 在后一种语言中实现相同的功能。
在 Writer 中可以有一个 table(不是电子表格——只是普通的 table),您可以在单元格上按 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 table 公式比电子表格公式更受限制。 http://libreoffice-dev.blogspot.com/2019/11/calculations-inside-of-writer-tables.html 中有支持的函数列表。不支持 AFAIK 调用宏。
可能您想要的而不是 table 是通过转到 插入 -> 对象 -> OLE 对象[=21= 将 Calc 电子表格嵌入到 Writer 文档的该位置].然后将 amountInWords
重写为基本用户定义函数 (UDF)。
如果您必须使用 BeanShell,则编写一个加载和调用 BeanShell 方法的 Basic UDF。或者您可以创建一个 BeanShell Calc 加载项,尽管这更困难,需要 XML 个配置文件。对于加载项,用 Java 编写可能比 BeanShell 更容易,因为有更多示例和文档可用。
或者,不嵌入电子表格,而是在 BeanShell 中创建一个搜索和替换 Writer 宏,在 table 中执行任何需要的计算。在打开文档等事件中将宏设置为 运行。
我在这个问题上苦苦挣扎了一段时间,但我无法在线找到任何解决方案。我得到的最接近的是如何编写可以在 Calc 的公式中使用的 Basic 函数,但是由于 Basic 和 BeanShell 是完全不同的语言,所以我找不到合适的 syntax/procedure 在后一种语言中实现相同的功能。
在 Writer 中可以有一个 table(不是电子表格——只是普通的 table),您可以在单元格上按 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 table 公式比电子表格公式更受限制。 http://libreoffice-dev.blogspot.com/2019/11/calculations-inside-of-writer-tables.html 中有支持的函数列表。不支持 AFAIK 调用宏。
可能您想要的而不是 table 是通过转到 插入 -> 对象 -> OLE 对象[=21= 将 Calc 电子表格嵌入到 Writer 文档的该位置].然后将 amountInWords
重写为基本用户定义函数 (UDF)。
如果您必须使用 BeanShell,则编写一个加载和调用 BeanShell 方法的 Basic UDF。或者您可以创建一个 BeanShell Calc 加载项,尽管这更困难,需要 XML 个配置文件。对于加载项,用 Java 编写可能比 BeanShell 更容易,因为有更多示例和文档可用。
或者,不嵌入电子表格,而是在 BeanShell 中创建一个搜索和替换 Writer 宏,在 table 中执行任何需要的计算。在打开文档等事件中将宏设置为 运行。