You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2021/11/25 05:07:01 UTC
svn commit: r1895312 - in /poi/trunk/poi/src: main/java/org/apache/poi/ss/usermodel/DataFormatter.java test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java
Author: fanningpj
Date: Thu Nov 25 05:07:01 2021
New Revision: 1895312
URL: http://svn.apache.org/viewvc?rev=1895312&view=rev
Log:
[bug-63211] fix issue with escaped % in custom number format
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java
Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java?rev=1895312&r1=1895311&r2=1895312&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java Thu Nov 25 05:07:01 2021
@@ -313,7 +313,8 @@ public class DataFormatter {
// int i = cellValue > 0.0 ? 0 : cellValue < 0.0 ? 1 : 2;
// String formatStr = (i < formatBits.length) ? formatBits[i] : formatBits[0];
- String formatStr = formatStrIn;
+ // this replace is done to fix https://bz.apache.org/bugzilla/show_bug.cgi?id=63211
+ String formatStr = formatStrIn.replace("\\%", "\'%\'");
// Excel supports 2+ part conditional data formats, eg positive/negative/zero,
// or (>1000),(>0),(0),(negative). As Java doesn't handle these kinds
Modified: poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java?rev=1895312&r1=1895311&r2=1895312&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java Thu Nov 25 05:07:01 2021
@@ -1020,6 +1020,18 @@ class TestDataFormatter {
}
+ @Test
+ void bug63211() {
+ DataFormatter formatter = new DataFormatter();
+ // https://bz.apache.org/bugzilla/show_bug.cgi?id=63211
+ // this format is an escaped % so is not the built-in percent which treats 0.125 as 12.5%
+ // this escaped format just appends a % to the raw decimal - so 12.5 becomes 12.5%
+ assertEquals("12.5%",
+ formatter.formatRawCellContents(12.5, -1, "0.0\\%;\\-0.0\\%"));
+ assertEquals("-12.5%",
+ formatter.formatRawCellContents(-12.5, -1, "0.0\\%;\\-0.0\\%"));
+ }
+
private void doFormatTestSequential(DataFormatter formatter) {
for (int i = 0; i < 1_000; i++) {
assertTrue(doFormatTest(formatter, 43551.50990171296, "3/27/19 12:14:15 PM", i));
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org