我的目标是创建一个 Excel 文件供用户通过 apache poi 下载。

我的 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"); 

问题是我得到了这些奇怪的值:

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



有什么建议?

请您参考如下方法:

发现出了什么问题。 HttpServletResponse 必须在其他任何事情之前先设置

//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"); 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!