2013-11-20 61 views
-1

我有一个奇怪的行为,希望有人可能知道发生了什么。Apache Poi配方字符串

对于Java中的个人项目,我使用Apache poi(版本3.9)读取和写入excel文件。 在这些excel文件中有一个公式,我想改变另一种写法。

我有一个循环,其设定我Excelobject与所需的式串

excelobject.setDataFormula( “SUM(L” +计数器+ “-6,75)”); //它看起来像SUM(L2-6,75)等等

但是,当我将这些公式写入文件并检查它时。它已经神秘地变成了像SUM(L2-6; 75)这样的东西。改变,变成;因此该公式不能像预期那样工作。

有人可以向我解释为什么在一个单元格上的apache poi setFormula对此做了什么?

编辑:

我改变了我的循环使用双6,75而不是一个字符串6,75的,这似乎在创建公式时提供帮助。所以这个直接的问题是固定的,尽管我仍然对这种行为为什么会好奇。

+0

它看起来像它,因为您使用逗号作为分隔符。您是否尝试使用\转义字符串中的逗号? – Sionnach733

+0

是的,我试过逃跑。但一个\,是不是一个有效的输入字符串:( –

+0

好吧,我张贴答案,重新考虑到apachepoi javadocs可能会更详细地解释这一点。) – Sionnach733

回答

2

转到Control panel -> Region and Language -> Additional settings并将List Separator更改为逗号以外的内容。你应该使用一个没有出现在你的文件中的字符。一定要挑选将来不会添加到文件中的内容。

它从,变为;,因为,被用作分隔符。发现,的任何地方都表示新的小区。读取字符串时,它将更改逗号,以便在应该只有一个单元格的情况下不会创建2个单元格。如果您按照所述更改List Separator,则逗号应保持不变。

+1

哈哈确定这真的很奇怪。我去看看这个解决方案,看看是否它的工作原理是,我的价值被设定了,所以它已经不是我的了,无论我改变它来代替(〜),因为这是我从来没有使用的东西,当我再次运行公式转换器时,所有;现在代替它。所以它似乎使用这个值确实是一种奇怪的方式,当我将它改为一个逗号时,看它做了什么;再次而不是一个逗号,所以它似乎得到了这个值,无论它是什么当它不是一个逗号,而是一个逗号时,它仍然是这样;它的确非常模糊,我现在只会加倍。 –