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)
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. Regards, Yegor
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