spring mvc 條件查詢導出excel

excel 的操作是基於apache POI 開源項目,這個項目能操作excel,word等
官網:https://poi.apache.org/
maven依賴

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.10-FINAL</version>
</dependency>

spring mvc可以支持excel的下載 繼承AbstractExcelView

eg:View層:QrmallCashExcelView

public class QrmallCashExcelView extends AbstractExcelView {

    @SuppressWarnings("unchecked")
    @Override
    protected void buildExcelDocument(Map<String, Object> model,
            HSSFWorkbook workbook, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        List<QrmallCash> items = (List<QrmallCash>) model.get("items");
        HSSFSheet sheet = workbook.createSheet();
        sheet.setDefaultColumnWidth(30);

        HSSFCellStyle style = getTableTitle(workbook);

        getCell(sheet, 0, 0, style, "暱稱");
        getCell(sheet, 0, 1, style, "姓名");
        getCell(sheet, 0, 2, style, "金額");
        getCell(sheet, 0, 3, style, "時間");

        for (int i = 0; i < items.size(); i++) {
            QrmallCash item = items.get(i);
            User user = item.getUser();
            String name = user.getIdent() == null
                    || StringUtils.isEmpty(user.getIdent().getName()) ? ""
                    : user.getIdent().getName();
            getCell(sheet, i + 1, 0, style, name);
            getCell(sheet, i + 1, 1, style, user.getNickname());
            getCell(sheet, i + 1, 2, style, item.getAmount() / 100 + "元");
            getCell(sheet, i + 1, 3, style, DateFormatUtils.format(
                    item.getCdate(), "yyyy-MM-dd HH:mm:ss"));
        }
        StringBuffer fileName = new StringBuffer()
                .append("平臺資金流轉情況報表")
                .append(DateFormatUtils.format(System.currentTimeMillis(),
                        "yyyy-MM-dd")).append(".xls");

        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-disposition", "attachment;filename="
                + URLEncoder.encode(fileName.toString(), "UTF-8"));
        OutputStream outputStream = response.getOutputStream();
        workbook.write(outputStream);
        outputStream.flush();
        IOUtils.closeQuietly(outputStream);
    }

    public HSSFCell getCell(HSSFSheet sheet, int row, int col,
            HSSFCellStyle style, String text) {
        HSSFCell cell = getCell(sheet, row, col);
        cell.setCellStyle(style);
        setText(cell, text);
        return cell;
    }

    private void processBaseStyle(HSSFCellStyle style) {
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    }

    private void processBaseFont(HSSFFont font) {
        font.setFontName("宋體");
    }

    private HSSFFont getTableTitleFont(HSSFWorkbook workbook) {
        HSSFFont font = workbook.createFont();
        font.setFontHeightInPoints((short) 14);
        processBaseFont(font);
        return font;
    }

    private HSSFCellStyle getTableTitle(HSSFWorkbook workbook) {
        HSSFCellStyle style = workbook.createCellStyle();
        processBaseStyle(style);
        style.setFont(getTableTitleFont(workbook));
        return style;
    }

}

Controller層

@RequestMapping(value = "/export", method = RequestMethod.GET)
    public ModelAndView export(HttpServletRequest request,
            HttpServletResponse response, ModelMap modelMap) throws IOException {
        String name = StringUtils.trimToEmpty(request.getParameter("name"));
        String type = StringUtils.trimToEmpty(request.getParameter("type"));
        String startTime = StringUtils.trimToEmpty(request
                .getParameter("startTime"));
        String endTime = StringUtils.trimToEmpty(request
                .getParameter("endTime"));
        PageVo page = this.processPageVo(request,
                baseListUrl + "?" + WebUtils.createQrmallCashParams(request));
        Map<String, String> mapParams = new HashMap<String, String>();
        mapParams.put("name", name);
        mapParams.put("type", type);
        mapParams.put("startTime", startTime);
        mapParams.put("endTime", endTime);
        List<QrmallCash> items = new ArrayList<QrmallCash>();
        page.setTotalPageCount(1);
        while (page.getCurrPageNum() <= page.getTotalPageCount()) {
            List<QrmallCash> temp = qrmallCashService.list(page, mapParams);
            for (QrmallCash qrmallCash : temp) {
                User wxUser = wxUserService.get(qrmallCash.getFromid());
                processUser(wxUser);
                qrmallCash.setUser(wxUser);
            }
            items.addAll(temp);
            page.setCurrPageNum(page.getCurrPageNum() + 1);
        }
        modelMap.put("items", items);//根據條件查詢數據 放入ModelMap中
        QrmallCashExcelView view = new QrmallCashExcelView();
        return new ModelAndView(view, modelMap);
    }

jsp頁面:

<script type="text/javascript">
    $('#export').bind('click',function(){
        location.href= "${basePath}qrmallCash/export?" + $("form").serialize();
    }); 
</script>

$(“form”).serialize()獲取表單中input的值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章