From 8e2028896e95fe0371bd4bfe2b82e8198bf3e2e1 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Wed, 28 Oct 2009 10:31:34 +0000 Subject: preserve leading and trailing white spaces in XSSFRichTextString, see Bugzilla 48070 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@830492 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFRichTextString.java | 24 ++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java') diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java index aa4e87f78e..fdf23ab9a6 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java @@ -20,8 +20,11 @@ package org.apache.poi.xssf.usermodel; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.xssf.model.StylesTable; +import org.apache.xmlbeans.XmlObject; +import org.apache.xmlbeans.XmlCursor; import org.openxmlformats.schemas.spreadsheetml.x2006.main.*; +import javax.xml.namespace.QName; import java.util.ArrayList; @@ -70,15 +73,16 @@ public class XSSFRichTextString implements RichTextString { private StylesTable styles; /** - * Create a rich text string and initialize it with empty string + * Create a rich text string */ public XSSFRichTextString(String str) { st = CTRst.Factory.newInstance(); st.setT(str); + preserveSpaces(st.xgetT()); } /** - * Create empty rich text string + * Create empty rich text string and initialize it with empty string */ public XSSFRichTextString() { st = CTRst.Factory.newInstance(); @@ -342,6 +346,7 @@ public class XSSFRichTextString implements RichTextString { public void setString(String s){ clearFormatting(); st.setT(s); + preserveSpaces(st.xgetT()); } /** @@ -461,4 +466,19 @@ public class XSSFRichTextString implements RichTextString { return ctFont; } + + /** + * Add the xml:spaces="preserve" attribute if the string has leading or trailing white spaces + * + * @param xs the string to check + */ + protected static void preserveSpaces(STXstring xs) { + String text = xs.getStringValue(); + if (text != null && (text.startsWith(" ") || text.endsWith(" "))) { + XmlCursor c = xs.newCursor(); + c.toNextToken(); + c.insertAttributeWithValue(new QName("http://www.w3.org/XML/1998/namespace", "space"), "preserve"); + c.dispose(); + } + } } -- cgit v1.2.3