使用Apache ODF Toolkit Simple API和Java格式化单元格

时间:2018-02-09 15:49:46

标签: java libreoffice-calc odf odftoolkit

我需要使用Apache ODF Toolking创建ods文档并格式化其单元格的内容。

我能够设置日期和简单数字的格式,但出于某种原因,当我尝试使用科学记数法进行格式化时,它不起作用。它无法解析字符串或将E00包装到" E00"

equation = pd.Series([])
if keep['seasonality']:
    equation = equation.add(months,fill_value=0)
if keep['age']:
    equation = equation.add(age,fill_value=0)
equation
Out[91]: 
0    2.0
1    3.0
2    3.0
3    4.0
4    5.0
dtype: float64

如果有人能提供帮助,我真的很感激,谢谢。

这里的完整代码https://gist.github.com/EnricoScantamburlo/b06d3a9e52682276b8ca4f6bf51e6f6a

1 个答案:

答案 0 :(得分:2)

基本上,Apache ODF Toolkit不支持您想要做的事情(从0.8.2版本开始)。 为了能够在.ods文件中使用Scientific Number格式,底层库(在您的情况下为Apache ODF Tool)应该能够生成<number:scientific-number>数字样式。有关科学数字样式的更多信息,请参阅http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1-html/OpenDocument-v1.1.html#14.7.1.Number%20Style|outline

似乎Apache ODF Toolkit将E0视为货币或其他特殊符号,而不是生成类似

的内容
<number:number-style style:name="N117">
    <number:scientific-number number:decimal-places="2" number:min-exponent-digits="2" number:min-integer-digits="1">
    </number:scientific-number>
</number:number-style>

它只是生成这个

<number:number-style style:name="n3cf821">
    <number:number number:decimal-places="2" number:min-integer-digits="1"></number:number>
    <number:text>E0</number:text>
</number:number-style>

好消息,Apache ODF Toolkit是开源的,所以你可以提供修复,这很容易,只需修复OdfNumberStyle.buildFromFormat