spring MVC 生成并下载Excel

来源:互联网 发布:程序员对公司的建议 编辑:程序博客网 时间:2024/06/05 23:02

1、Controller类:

@Controller@RequestMapping("down")public class down {    @RequestMapping(params = "downExcel")    public String download(HttpServletRequest request,HttpServletResponse response) throws IOException{    String columnNames[]={"ID","项目名","销售人","负责人","所用技术","备注"};//列名    //生成一个Excel文件    // 创建excel工作簿    Workbook wb = new HSSFWorkbook();    // 创建第一个sheet(页),并命名    Sheet sheet = wb.createSheet(list.get(0).get("sheetName").toString());    // 手动设置列宽。第一个参数表示要为第几列设;,第二个参数表示列的宽度,n为列高的像素数。    for(int i=0;i<keys.length;i++){        sheet.setColumnWidth((short) i, (short) (35.7 * 150));    }    // 创建第一行    Row row = sheet.createRow((short) 0);    //设置列名    for(int i=0;i<columnNames.length;i++){        Cell cell = row.createCell(i);        cell.setCellValue(columnNames[i]);    }    //同理可以设置数据行    ByteArrayOutputStream os = new ByteArrayOutputStream();    try {        wb.write(os);    } catch (IOException e) {        e.printStackTrace();    }    byte[] content = os.toByteArray();    InputStream is = new ByteArrayInputStream(content);    // 设置response参数,可以打开下载页面    response.reset();    response.setContentType("application/vnd.ms-excel;charset=utf-8");    response.setHeader("Content-Disposition", "attachment;filename="+ new String((fileName + ".xls").getBytes(), "iso-8859-1"));    ServletOutputStream out = response.getOutputStream();    BufferedInputStream bis = null;    BufferedOutputStream bos = null;    try {        bis = new BufferedInputStream(is);        bos = new BufferedOutputStream(out);        byte[] buff = new byte[2048];        int bytesRead;        // Simple read/write loop.        while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {            bos.write(buff, 0, bytesRead);        }    } catch (final IOException e) {        throw e;    } finally {        if (bis != null)            bis.close();        if (bos != null)            bos.close();    }    return null;    }}

前台代码:

<input type="button" value="导出数据" onclick="download()"/>//js代码function download(){    var url="down.do?downExcel";    window.open(url);}

文章参考:http://my.oschina.net/aptx4869/blog/298507

0 0
原创粉丝点击