Bug 53561 - Unexpected adding of drawings into a workbook
Summary: Unexpected adding of drawings into a workbook
Alias: None
Product: POI
Classification: Unclassified
Component: HSSF (show other bugs)
Version: 3.8-FINAL
Hardware: PC All
: P2 normal (vote)
Target Milestone: ---
Assignee: POI Developers List
Depends on:
Blocks: 53010
  Show dependency tree
Reported: 2012-07-18 07:37 UTC by Anton Kosyakov
Modified: 2012-08-12 11:47 UTC (History)
0 users

Unit test, input and output workbooks (8.56 KB, application/x-zip-compressed)
2012-07-18 07:37 UTC, Anton Kosyakov

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Kosyakov 2012-07-18 07:37:43 UTC
Created attachment 29073 [details]
Unit test, input and output workbooks

When I try to add an auto filter to a workbook with POI the workbook contains the new drawings.

To reproduce this bug see an attachment.

Note that the attached workbook contains some list data validations. Without them the bug would not be reproduced.

Also I started investigating of this issue after I had got the following exception (i can't have reproduced this exception with unit testing yet but it is the real issue):
java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
	at java.util.ArrayList.get(ArrayList.java:322)
	at org.apache.poi.hssf.model.DrawingManager2.getDrawingGroup(DrawingManager2.java:125)
	at org.apache.poi.hssf.model.DrawingManager2.allocateShapeId(DrawingManager2.java:71)
	at org.apache.poi.hssf.record.EscherAggregate.convertPatriarch(EscherAggregate.java:988)
	at org.apache.poi.hssf.record.EscherAggregate.convertUserModelToRecords(EscherAggregate.java:821)
	at org.apache.poi.hssf.record.EscherAggregate.getRecordSize(EscherAggregate.java:508)
	at org.apache.poi.hssf.model.InternalSheet.preSerialize(InternalSheet.java:1567)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:1285)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1205)
Comment 1 Yegor Kozlov 2012-07-18 08:21:46 UTC
The described behavior is a limitation of HSSF: it can create new drawings from scratch but cannot modify existing ones. Auto-filters in the binary .xls format are graphic elements (comboboxes in the filter header are shapes) and when you add a filter to a sheet that already has drawing objects then the output can be corrupted or invalid.
There is an ongoing work to improve drawing support in HSSF, we plan to finish it by late August 2012 and then merge with trunk. Please wait till September, your problem should be fixed by then.

Comment 2 Evgeniy Berlog 2012-08-12 11:47:08 UTC
This problem should be fixed in trunk.

Please try with a nightly build - see download links on http://poi.apache.org/
or build yourself from SVN trunk, see http://poi.apache.org/subversion.html