Foren

How to output excel in control panel portlet

wei tang, geändert vor 11 Jahren.

How to output excel in control panel portlet

Junior Member Beiträge: 36 Beitrittsdatum: 03.12.12 Neueste Beiträge
I use jxl.jar to export excel. The excel file encoding is messy code when I use Firefox and Chrom. It work fine in IE9. WHY?

CODE:

OutputStream outputStream = null;
WritableWorkbook book = null;
ByteArrayOutputStream bos = null;
try
{
System.out.println("00000000000000000000000000000000000");
PortletContext pc = renderRequest.getPortletSession().getPortletContext();

/*
* HttpServletResponse httpResponse =
* PortalUtil.getHttpServletResponse(renderResponse);
* httpResponse.setContentType("application/vnd.ms-excel");
* httpResponse.flushBuffer();
*/
HttpServletResponse response = PortalUtil.getHttpServletResponse(renderResponse);
response.reset();
response.setHeader("Content-disposition", "attachment; filename=" + new String("Book1".getBytes("UTF-8"), "UTF-8") + ".xls");
response.setContentType("application/vnd.ms-excel");
renderResponse.addProperty(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + new String("Book1".getBytes("UTF-8"), "UTF-8") + ".xls");

//outputStream = renderResponse.getPortletOutputStream();//doesn't work
outputStream = response.getOutputStream();//doesn't work

System.out.println("1111111111111111111111111111111111111");
System.out.println(pc.getRealPath("")+"test.xls");

WorkbookSettings settings = new WorkbookSettings();
settings.setEncoding("utf-8");
book = Workbook.createWorkbook(outputStream,settings);//unreadable code, include page html element
//book = Workbook.createWorkbook(new File(pc.getRealPath("")+"test.xls"));// it's work fine

WritableSheet sheet = book.createSheet(" 第一页 ", 0);


Label label = new Label(0, 0, " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ");


sheet.addCell(label);


jxl.write.Number number = new jxl.write.Number(1, 0, 555.12541);
sheet.addCell(number);

System.out.println("22222222222222222222222222222222222222222");


book.write();
book.close();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (bos != null)
bos.close();
}
thumbnail
Rewati Raman, geändert vor 11 Jahren.

RE: How to output excel in control panel portlet

Junior Member Beiträge: 97 Beitrittsdatum: 24.02.12 Neueste Beiträge
Hi wei tang,

I had also generated xls file but i had used poi.jar and my code is working fine in all browser...

here is my code


HSSFWorkbook workbook = new HSSFWorkbook();  
/*******************workbook  filling statements***************/
resourceResponse.setContentType("application/vnd.ms-excel");		    	
resourceResponse.addProperty(HttpHeaders.CACHE_CONTROL, "max-age=3600, must-revalidate");
resourceResponse.addProperty(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=Report.xls");
OutputStream out = resourceResponse.getPortletOutputStream();
workbook.write(out);  
out.flush();
out.close();	


Regards,
Rewati Raman
wei tang, geändert vor 11 Jahren.

RE: How to output excel in control panel portlet

Junior Member Beiträge: 36 Beitrittsdatum: 03.12.12 Neueste Beiträge
Rewati Raman:
Hi wei tang,

I had also generated xls file but i had used poi.jar and my code is working fine in all browser...

here is my code


HSSFWorkbook workbook = new HSSFWorkbook();  
/*******************workbook  filling statements***************/
resourceResponse.setContentType("application/vnd.ms-excel");		    	
resourceResponse.addProperty(HttpHeaders.CACHE_CONTROL, "max-age=3600, must-revalidate");
resourceResponse.addProperty(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=Report.xls");
OutputStream out = resourceResponse.getPortletOutputStream();
workbook.write(out);  
out.flush();
out.close();	


Regards,
Rewati Raman



great! use poi is work fine, thx!
thumbnail
Hitoshi Ozawa, geändert vor 11 Jahren.

RE: How to output excel in control panel portlet

Liferay Legend Beiträge: 7942 Beitrittsdatum: 24.03.10 Neueste Beiträge
Probably because IE uses different method to determine encoding.