Excel导出(ssh)

xiaoxiao2021-02-28  102

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; }
转载请注明原文地址: https://www.6miu.com/read-71280.html

最新回复(0)