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();
}
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();
}
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
Regards,
Rewati Raman
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ägeRewati 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 codeHSSFWorkbook 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!
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.