Domanda

I'm generating an Excel file in Java with POI 3.2 (Latest version I can use for my client). Here is my code. As you can see I'm using HSSF because I need to make a XLS file.

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Reporting");
sheet.setColumnWidth(250,250);
HSSFRow Row;
HSSFCell Cell;

//Content part (doesn't matter)


IWDResource resource = WDResourceFactory.createCachedResource(
                wb.getBytes(),
                "workbook.xls",
                WDWebResourceType.XLS);

wdContext.currentContextElement().setXls(resource);

Now after I've downloaded the XLS file, I want to open it but the file seems to be corrupt.

Image on link: http://tinyurl.com/nop52sh

When I'm pressing 2 times on 'Don't send', de excell file opens in correct form.

Any idea why?

È stato utile?

Soluzione

Don't call wb.getBytes(), it doesn't do what you want. From the getBytes() javadoc

Method getBytes - get the bytes of just the HSSF portions of the XLS file. Use this to construct a POI POIFSFileSystem yourself.

Instead, if you want the overall xls file as a byte array, do

ByteArrayOutStream baos = new ByteArrayOutStream();
wb.write(baos);
byte[] xlsBytes = baos.toByteArray();

Finally, Apache POI 3.2 is ancient, over 5 years old now! You really ought to upgrade, see the changelog for an idea of all the bugs fixed since then

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top