Hello,
I've just found POI so I am quite new to using it (and I'm learning Java
as I go).
Anyways, My particular use case is that I need to extract a byte[] of an
object inserted into an office document and apply some logic to the
byte[] (I'm looking for embedded PE files). I have a test spreadsheet
where I embedded notepad.exe to test with.
The following is my code:
package cs.harvester.office;
import java.util.List;
import org.apache.poi.hssf.eventusermodel.HSSFListener;
import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
import org.apache.poi.hssf.record.EmbeddedObjectRefSubRecord;
import org.apache.poi.hssf.record.ObjRecord;
import org.apache.poi.hssf.record.Record;
import org.apache.poi.hssf.record.SubRecord;
import com.sun.org.apache.xml.internal.security.utils.Base64;
public class EventExample implements HSSFListener {
@Override
public void processRecord(Record record) {
switch (record.getSid()) {
case ObjRecord.sid:
ObjRecord objRec = (ObjRecord)record;
System.out.println("Obj: ");
//
List<SubRecord> subRecords = objRec.getSubRecords();
for(SubRecord subRecord : subRecords) {
System.out.print(" SubRecord: " +
subRecord.getClass().getSimpleName() + ": ");
System.out.println(subRecord.serialize().length);
if(subRecord instanceof CommonObjectDataSubRecord) {
CommonObjectDataSubRecord tmp =
(CommonObjectDataSubRecord)subRecord;
} else if (subRecord instanceof
EmbeddedObjectRefSubRecord){
EmbeddedObjectRefSubRecord tmp =
(EmbeddedObjectRefSubRecord)subRecord;
System.out.println(" EmbeddedObject: " +
tmp.getOLEClassName() + " Stream ID: " + tmp.getStreamId() + "
ObjectData Length: " + tmp.getObjectData().length);
System.out.println(" EmbeddedObject: " +
Base64.encode(tmp.getObjectData()));
}
}
break;
default:
System.out.println(record.getClass().getSimpleName());
}
}
}
The problem I have is that the ObjectData byte[] is always length 0. How
should I go about getting the correct byte[] for the object?
Thanks,
Raindog
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]