poi-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 43877] - Cant open the saved XLS has 58 controls
Date Wed, 21 Nov 2007 10:44:11 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=43877>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=43877





------- Additional Comments From yegor@dinom.ru  2007-11-21 02:44 -------
Daniel,

1. After I applied the fix for EmbeddedObjectRefSubRecord the test for 1
checkbox passes. That is if I create 
a xls with 1 checkbox ans re-save it by POI the xls is still valid.
Patch applied, thanks.

2. The problem may also be related to EscherMetafileBlip.
An attempt to view the binary structure of attached saved.xls using BiffViewer
results in ArrayIndexOutOfBoundsException:

java.lang.ArrayIndexOutOfBoundsException
        at java.lang.System.arraycopy(Native Method)
        at
org.apache.poi.ddf.EscherMetafileBlip.fillFields(EscherMetafileBlip.java:87)
        at org.apache.poi.ddf.EscherBSERecord.fillFields(EscherBSERecord.java:94)
        at
org.apache.poi.ddf.EscherContainerRecord.fillFields(EscherContainerRecord.java:56)
        at
org.apache.poi.ddf.EscherContainerRecord.fillFields(EscherContainerRecord.java:56)
        at
org.apache.poi.hssf.record.AbstractEscherHolderRecord.convertToEscherRecords(AbstractEscherHolderRecord.java:104)
        at
org.apache.poi.hssf.record.AbstractEscherHolderRecord.fillFields(AbstractEscherHolderRecord.java:93)
        at org.apache.poi.hssf.record.Record.<init>(Record.java:53)
        at
org.apache.poi.hssf.record.AbstractEscherHolderRecord.<init>(AbstractEscherHolderRecord.java:66)
        at
org.apache.poi.hssf.record.DrawingGroupRecord.<init>(DrawingGroupRecord.java:42)
        at org.apache.poi.hssf.dev.BiffViewer.createRecord(BiffViewer.java:282)
        

Although BiffViewer is happy with the original has58controls.xls. I can dump and
see its structure


I look at the code and it seems I see a bug:

    public int serialize( int offset, byte[] data, EscherSerializationListener
listener )
    {
        listener.beforeRecordSerialize(offset, getRecordId(), this);

        int pos = offset;
        LittleEndian.putShort( data, pos, getOptions() ); pos += 2;
        LittleEndian.putShort( data, pos, getRecordId() ); pos += 2;
!bug    LittleEndian.putInt( data, getRecordSize() - HEADER_SIZE ); pos += 4;

it writes the record size at a wrong position. Should be
       LittleEndian.putInt( data, pos, getRecordSize() - HEADER_SIZE ); pos += 4;

Please confirm.


Yegor

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


Mime
View raw message