Currently RichText is lost (converted to normal text) in SXSSF. Two ways to support this were suggested on the mailing list: either maintaining the RichText instances in memory (like styles) or streaming them via a separate file. For my purposes I think in memory would be adequate, but a streaming solution that worked like SXSSF and kept the last n entries in memory would be tunable for different cases.
In addition to this issue RichText is also trimmed if there are leading or trailing spaces. This issue is similar to Bug 48070. Probably it should be treated as separate issue. I have localized the problem comes from: org.apache.poi.xssf.streaming.SheetDataWriter In metod 'writeCell' fragment: case Cell.CELL_TYPE_STRING: { _out.write(" t=\"inlineStr\">"); _out.write("<is><t>"); outputQuotedString(cell.getStringCellValue()); _out.write("</t></is>"); break; } a check should be done if value contains leading/trailing spaces and then handled differently: _out.write("<is><t xml:space=\"preserve\">"); instead of: _out.write("<is><t>");
it is also the same issue with leading/trailing linebreaks (\n). They are trimmed as well.
A very good catch, thanks! Fixed in r1397499, junit aded. Yegor (In reply to comment #1) > In addition to this issue RichText is also trimmed if there are leading or > trailing spaces. > This issue is similar to Bug 48070. Probably it should be treated as > separate issue. > > I have localized the problem comes from: > org.apache.poi.xssf.streaming.SheetDataWriter > In metod 'writeCell' fragment: > > case Cell.CELL_TYPE_STRING: { > _out.write(" t=\"inlineStr\">"); > _out.write("<is><t>"); > outputQuotedString(cell.getStringCellValue()); > _out.write("</t></is>"); > break; > } > a check should be done if value contains leading/trailing spaces and then > handled differently: > > _out.write("<is><t xml:space=\"preserve\">"); > instead of: > _out.write("<is><t>");
*** Bug 53323 has been marked as a duplicate of this bug. ***
This is pretty much the same as bug 57294 where a possible implementation was suggested, but is now outdated...
seems like a fix was applied