Вопрос

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?

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top