2013-11-20 59 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

哈哈確定這真的很奇怪。我去看看這個解決方案,看看是否它的工作原理是,我的價值被設定了,所以它已經不是我的了,無論我改變它來代替(〜),因爲這是我從來沒有使用的東西,當我再次運行公式轉換器時,所有;現在代替它。所以它似乎使用這個值確實是一種奇怪的方式,當我將它改爲一個逗號時,看它做了什麼;再次而不是一個逗號,所以它似乎得到了這個值,無論它是什麼當它不是一個逗號,而是一個逗號時,它仍然是這樣;它的確非常模糊,我現在只會加倍。 –