Excel导出(ssh)

1、在ftl页面的搜索部分添加导出的方法按钮

<input type="button" id="exportButton" class="formButton" value="Excel 导出" hidefocus />

2、在js中定义searchButton,
然后在后面添加exportButton 与searchButton的click事件方法,还要submit listForm ,这样输入搜索框中的内容才会提交到导出Excel 的Action方法中,才不会出现乱码。
注意:导出方法执行后,要再次回到list方法上,不然点页码时会再次执行导出方法
相关js片段如下:

<script type="text/javascript">
$().ready(function() {
    var $searchButton = $("#searchButton");
    // 按筛选出的SP厂商名导出Excel
    $("#exportButton").click(function() {
        $("#listForm").attr("action","sp!exportfile.action");
        $("#listForm").submit();
        $("#listForm").attr("action","sp!list.action");
    })
    $("#searchButton").click(function() {
        $("#listForm").attr("action","sp!list.action");
        $("#listForm").submit();
    })
})
</script>

3、在导出Excel 的Action方法中,直接利用pager自带的方法得到当前查询的厂商列表:
首先设置PageNumber为1,因为导出是从首页的第一天记录开始的,不是从当前页开始;然后设置PageSize 为 Integer.MAX_VALUE,因为要导出的是搜索出的全部记录,而不是一页的量;利用findPager(pager)这个已经封装好的方法得到当前查询的厂商列表页面对象,再调用pager.getResult() 这个方法得到查询出来的厂商列表exportList。
导出excel的代码如下:

public String exportfile(){
            try {
                // 创建导出列表,赋值已搜索出的SP厂商列表
                pager.setPageNumber(1);
                pager.setPageSize(Integer.MAX_VALUE);
                pager = spService.findPager(pager);
                List<Sp> exportList = (List<Sp>)pager.getResult();
                System.out.println("++++++"+exportList.size());
                // 创建导出操作工具对象
                HSSFWorkbook wb = new HSSFWorkbook();
                HSSFSheet sheet = wb.createSheet();
                HSSFRow row = null;
                // 若确认结果列表不为空才可以操作
                if (exportList != null && exportList.size() > 0) {
                    // 创建列名行
                    row = sheet.createRow(0);
                    sheet.setColumnWidth(0, (short) 10000);
                    sheet.setColumnWidth(1, (short) 6000);
                    row.createCell(0).setCellValue("厂商名称");
                    row.createCell(1).setCellValue("厂商创建时间");

                    for (int i = 0; i < exportList.size(); i++) {
                        row = sheet.createRow(i + 1);
                        sheet.setColumnWidth(0, (short) 10000);
                        row.createCell(0).setCellValue(exportList.get(i).getName());
                        row.createCell(1).setCellValue(
                                DateOperateUtil.dateToStringWithFormat(exportList
                                        .get(i).getCreateDate(),
                                        "yyyy-MM-dd HH:mm:ss"));
                    }
                    try {
                        byte[] botes =  DateOperateUtil.dateToStringWithFormat(new Date(), "yyyyMMddHHmmss").getBytes("UTF-8");
                        String sign = new String(botes, "UTF-8");
                        HttpServletResponse response = getResponse();
                        response.reset();
                        response.setCharacterEncoding("UTF-8");
                        response.addHeader("Content-Disposition",
                                "attachment;filename="
                                        + new String(sign.getBytes(), "ISO-8859-1")
                                        + ".xls");
                        OutputStream out = new BufferedOutputStream(
                                response.getOutputStream());
                        response.setContentType("application/msexcel;charset=UTF-8");
                        wb.write(out);
                        out.flush();
                        out.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                        return ERROR;
                    }
                } else {
                    addActionError("查询导出数据为空");
                    return ERROR;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return ERROR;
            }
            return null;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值