In the decodeFlags(int) method of org.apache.poi.ddf.EscherSpRecord, it doesn't check to see that the stringbuffer has some contents before deleting the first character Line 157 needs to go from: result.deleteCharAt(0); To: if(result.length() > 0) { result.deleteCharAt(0); } Otherwise it blows up with a StringIndexOutOfBoundsException on some records
Comitted. Thanks!