You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by Jason Height <jh...@minotaur.apache.org> on 2005/08/08 09:11:47 UTC
Modifying HSSFCell string values and SST record
All,
Basically i have finished implementing rich text support (yaa!) but have
come across an interesting quirk. Currently the SST record will grow based
on the number of nuique strings in the file, it never colapses (unless i
am missing something), so for example if i continually update a HSSFCell
string value by appending to it ie always creating a unique string by
overwriting the current value then the SST record will continue to grow
with many of the string entries being orphaned.
This will be the similar behaviour if i change the formatting of a
HSSFRichtextString.
Should there be something to delete orphaned strings in the SST record?
Presumably during serialization?
Thoughts?
Jason
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/
Re: Modifying HSSFCell string values and SST record
Posted by Michael Zalewski <za...@optonline.net>.
The problem might be a little more difficult. When you serialize the strings,
you have a list of Strings and Rich Text Strings as input, and you output a set
of 1 or more SST records.
When you "coalesce" the string data, you will end up removing some of the
strings from the input list. This will change the index of all the subsequent
strings in the list. That's not important in the SST record. But the LABELSST
records (which contain those index values) must be altered.
Here is an example. Let's say you start with a spreadsheet containing two
cells. The first cell has "Hello", and the second has "World". This would be
represeneted in 3 BIFF Records
SST: String 0 = "Hello"
String 1 = "World"
LABELSST: Index = 0
LABELSST: Index = 1
If you change the second cell from "World" to "POI", you will get
SST: String 0 = "Hello"
String 1 = "World"
String 2 = "POI"
LABELSST: Index = 0
LABELSST: Index = 2
You can see that if you try to get rid of the orphan String 1 = "World", you
will have to change the index value in all the subsequent LABELSST records.
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/
Re: Modifying HSSFCell string values and SST record
Posted by an...@superlinksoftware.com.
There should be a "coalesce" method. However, it shouldn't run by
default as it is probably time consuming. Many people would consider
extra filesize a happy tradeoff vs memory consumption or processor
utilization. It just depends.
It might also be good to optionally (this costs more memory) keep
reference counts in the SST and support an "an autocoalesce" method such
that it can do it automatically; however, I really don't want to have
that happen by default (too much memory used up for ref counts + too
much processor for looking them up on every change).
-andy
Jason Height wrote:
> All,
>
> Basically i have finished implementing rich text support (yaa!) but have
> come across an interesting quirk. Currently the SST record will grow
> based on the number of nuique strings in the file, it never colapses
> (unless i am missing something), so for example if i continually update
> a HSSFCell string value by appending to it ie always creating a unique
> string by overwriting the current value then the SST record will
> continue to grow with many of the string entries being orphaned.
>
> This will be the similar behaviour if i change the formatting of a
> HSSFRichtextString.
>
> Should there be something to delete orphaned strings in the SST record?
> Presumably during serialization?
>
> Thoughts?
>
> Jason
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
> Mailing List: http://jakarta.apache.org/site/mail2.html#poi
> The Apache Jakarta POI Project: http://jakarta.apache.org/poi/
>
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/