Spring MVC 使用poi sxssf 导出excel 2007 的数据

1  apache POI-HSSF and POI-XSSF 项目介绍URL   http://poi.apache.org/spreadsheet/index.html

2 api 文档 http://poi.apache.org/apidocs/

3 下载地址 http://poi.apache.org/download.html


4 jsp 页面代码

   $("#export").on("click", function () {
                var form = $("<form>");
                form.attr('style', 'display:none');
                form.attr('target', '');
                form.attr('method', 'post');
                form.attr('action', "/testproject/export");


                nameS= $('<input>');
                nameS.attr('type', 'hidden');
                nameS.attr('name', 'nameS');
                nameS.attr('value', $("#myform input[name='nameS']").val());

               
                createTimeLeft = $('<input>');
                createTimeLeft.attr('type', 'hidden');
                createTimeLeft.attr('name', 'createTimeLeft');
                createTimeLeft.attr('value', $("#myform input[name='createTimeLeft']").val());

                createTimeRight = $('<input>');
                createTimeRight.attr('type', 'hidden');
                createTimeRight.attr('name', 'createTimeRight');
                createTimeRight.attr('value', $("#myform input[name='createTimeRight']").val());
                $('body').append(form);  //将表单放置在web中
                //将查询参数控件提交到表单上
         
                form.append(sname);

                form.append(createTimeLeft);
                form.append(createTimeRight);
                form.submit();

            });

controller

@RequestMapping(value = "/export") 
public void export(HttpServletRequest request, HttpServletResponse response) {
    response.setCharacterEncoding("utf-8");
    response.setContentType("multipart/form-data");
    String fileName = System.currentTimeMillis() + ".xlsx";
    response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
    Map<String, Object> mapMessage = new HashMap<String, Object>();

    try { //从数据库中得到结果
        List<PointwallTasklog> list = queryFromDatabase();
        OutputStream out = response.getOutputStream();
        SXSSFWorkbook wb = new SXSSFWorkbook(-1);
        // turn off auto-flushing and accumulate all rows in memory
        wb.setCompressTempFiles(true); //使用gzip压缩,减小空间占用
        Sheet sh = wb.createSheet("下载日志");
        //设置每一列的宽度,注意 要乘以256,因为1代表excel中一个字符的1/256的宽度
        sh.setColumnWidth(0, 40 * 256);
        sh.setColumnWidth(1, 40 * 256);
        sh.setColumnWidth(2, 22 * 256);
        Row rowHeader = sh.createRow(0);
        Cell cellHeader = rowHeader.createCell(0);
        cellHeader.setCellValue("id");
        cellHeader = rowHeader.createCell(1);
        cellHeader.setCellValue("name");
        cellHeader = rowHeader.createCell(2);
        cellHeader.setCellValue("create_time");
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        for(int rownum = 1; rownum < list.size() + 1; rownum++) {
            Row row = sh.createRow(rownum);
            Cell cell = row.createCell(0);
            cell.setCellValue(list.get(rownum - 1).getId());
            cell = row.createCell(1);
            cell.setCellValue(list.get(rownum - 1).getName());
            cell = row.createCell(2);
            cell.setCellValue(simpleDateFormat.format(list.get(rownum - 1).getCreateTime()));

            // manually control how rows are flushed to disk
            if(rownum % 100 == 0) {  // ((SXSSFSheet)sh).flushRows(100); // retain 100 last rows and flush all others
                ((SXSSFSheet) sh).flushRows();
                //is a shortcut for ((SXSSFSheet)sh).flushRows(0),
                // this method flushes all rows
            }
        }

        wb.write(out);
        out.close();
        // dispose of temporary files backing this workbook on disk
        wb.dispose();
    } catch(Exception e) {
        e.printStacktrace();
    }
}


</pre><pre>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值