writing a poi workbook to output stream is generating weird values

无人久伴 提交于 2020-01-03 10:04:45

问题


i am aiming to create an Excel file for the user to download via apache poi.

I have this code in my servlet:

protected void doGet(HttpServletRequest request, 
              HttpServletResponse response) throws ServletException, IOException 
      {

            // create a workbook , worksheet
            Workbook wb = new HSSFWorkbook();
            Sheet sheet = wb.createSheet("MySheet");
            CreationHelper createHelper = wb.getCreationHelper();

            // Create a row and put some cells in it. Rows are 0 based.
            Row row = sheet.createRow((short)0);
            Cell cell = row.createCell(0);
            cell.setCellValue(1);
            row.createCell(1).setCellValue(1.2);
            row.createCell(2).setCellValue( createHelper.createRichTextString("This is a string") );
            row.createCell(3).setCellValue(true);

            //write workbook to outputstream
            ServletOutputStream out = response.getOutputStream();
            wb.write(out);
            out.flush();
            out.close();

            //offer the user the option of opening or downloading the resulting Excel file
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "attachment; filename=MyExcel.xls");

The problem is that i am getting these weird values:

`…MySheetŒ®üÿ » ÌÁ w dü©ñÒMbP?*+‚€%ÿÁƒ„¡"d,,à?à?

any suggestions?


回答1:


found whats wrong. the HttpServletResponse must first be set before anything else

//offer the user the option of opening or downloading the resulting Excel file
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-Disposition", "attachment; filename=MyExcel.xls");



回答2:


You need to set cell type for each cell, You can do so using :

cell.setCellType(Cell.CELL_TYPE_STRING );

Check api for more cell types here.

Or You can use DataFormatter for the same.



来源:https://stackoverflow.com/questions/11238479/writing-a-poi-workbook-to-output-stream-is-generating-weird-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!