You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by bu...@apache.org on 2003/04/28 10:04:53 UTC

DO NOT REPLY [Bug 19381] New: - When MergeCellsRecord becomes too big, excel is unable to read the spreadsheet.

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19381>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19381

When MergeCellsRecord becomes too big, excel is unable to read the spreadsheet.

           Summary: When MergeCellsRecord becomes too big, excel is unable
                    to read the spreadsheet.
           Product: POI
           Version: 1.5
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: Minor
          Priority: Other
         Component: HSSF
        AssignedTo: poi-dev@jakarta.apache.org
        ReportedBy: willem@vt4.net


I ran into a minor problem in POI, at first I thought it to
be related to the size of the data in the spreadsheet, but it turned
out to be the MergeCellsRecord that becomes too big, resulting 
in excel refusing to open the spreadsheet ("Unable to read file"),
while Gnumeric accepts it to be opened, but when trying to save it, 
gnumeric throws this assertion: ** CRITICAL **: file
/tmp/buildd/gnumeric-1.0.8/build/../plugins/excel/ms-biff.c: line 192
(ms_biff_put_len_next): assertion `len < MAX_LIKED_BIFF_LEN' failed.

This MAX_LIKE_BIFF_LEN turns out to be 8192.

Running your biffview on the spreadsheet, and piping that through a
grep/perl oneliner to sort the record-identifiers by size gives this : 

aa4028@gray : grep size|  biffview_01.txt | perl -pne 's/(.*=)(.*)/\2
\1\2/' | sort -n | tail -7
63 recordid = 0x41e, size =63
112 recordid = 0x5c, size =112
1018 recordid = 0xff, size =1018
7697 recordid = 0x3c, size =7697
8222 recordid = 0x3c, size =8222
8224 recordid = 0xfc, size =8224
12330 recordid = 0xe5, size =12330
^^^^^ => THE OFFENDER !!! too big (my guess)

When I remove all merging of cells from the code, and then generate the 
same spreadsheet again, Excel has no problems with the sheet anymore. 

aa4028@gray : grep size|  biffview_02.txt | perl -pne 's/(.*=)(.*)/\2
\1\2/' | sort -n | tail -7
58 recordid = 0xe5, size =58
63 recordid = 0x41e, size =63
112 recordid = 0x5c, size =112
1018 recordid = 0xff, size =1018
7697 recordid = 0x3c, size =7697
8222 recordid = 0x3c, size =8222
8224 recordid = 0xfc, size =8224
==> NO RECORDS GREATER THEN 8224 ( not 8192? ) --> works fine.

I thought I'd just inform you of this problem. I guess I'll just
rework my code to use fewer merged cells !

Thanks for your work on POI !