zoukankan      html  css  js  c++  java
  • spring mvc jxl导出

    jsp部分

    //导出表单  带当前分页信息

    <form id="queryform" name="queryform" method="post">
    <input type="hidden" id="queryfileName" name="queryfileName" /> <input
    type="hidden" id="export_query_page" name="export_query_page" /> <input
    type="hidden" id="export_query_row" name="export_query_row" />
    </form>

    //导出按钮

    <li><a class="add" id="excelExportQuery"
    href="javascript:onclick=accountdownloadQueryExcel('对账单')"
    onclick="return confirm('确实要导出这些记录吗?');" rel="excelExportQuery"><span>EXCEL导出</span></a></li>

    //jquery部分

    function accountdownloadQueryExcel(queryfileName) {
    document.getElementById("queryfileName").value = queryfileName;
    var page = ${pageInfo.pageNum};
    var rows = $("#nowPageSize", navTab.getCurrentPanel()).val();
    var Searchinstid = $("#Searchinstid", navTab.getCurrentPanel()).val();
    var shopid = $("#shopid", navTab.getCurrentPanel()).val();
    var status = $("#status", navTab.getCurrentPanel()).val();
    var stdate = $("#stdate", navTab.getCurrentPanel()).val();
    var jsdate = $("#jsdate", navTab.getCurrentPanel()).val();

    if (stdate == "") {
    stdate = "all";
    }
    if (jsdate == "") {
    jsdate = "all";
    }

    document.getElementById("export_query_page").value = page;
    document.getElementById("export_query_row").value = rows;
    var sFormQuery = document.getElementById("queryform");

    sFormQuery.action = "${ctx}/account/accountExcelExport/" + Searchinstid
    + "/" + shopid + "/" + status + "/" + stdate + "/" + jsdate;
    sFormQuery.submit();                //提交表单
    }

    ----------------------------------------------------------------------------------------------------------------------------------------------------

    controller部分

    // 导出对账单
    @RequestMapping(value = "/accountExcelExport/{Searchinstid}/{shopid}/{status}/{stdate}/{jsdate}", method = RequestMethod.POST)
    public String accountExcelExport(HttpServletResponse response,
    HttpServletRequest request,
    @PathVariable("Searchinstid") Integer institutionid,
    @PathVariable("shopid") Integer shopid,
    @PathVariable("status") Integer status,
    @PathVariable("stdate") String stdate,
    @PathVariable("jsdate") String jsdate) {
    // String fileName = request.getParameter("queryfileName");
    int page = Integer.parseInt(request.getParameter("export_query_page"));
    int rows = Integer.parseInt(request.getParameter("export_query_row"));
    String fileName = "公司流水对账单";
    PageHelper.startPage(page, rows);
    if (stdate.equals("all")) {
    stdate = "";
    }
    if (jsdate.equals("all")) {
    jsdate = "";
    }

    PageHelper.startPage(page, rows);
    List<Detail> list = accountService.SearchList(institutionid, shopid,
    status, stdate, jsdate);
    request.setAttribute("pageInfo", new PageInfo<Detail>(list));
    String[] Title = { "时间", "店名", "总业绩", "疗程款", "欠款", "还款", "体验卡", "奖励",
    "厂家分成款", "耗材费", "应付厂家费用", "备注" };
    // 以下开始输出到EXCEL
    try {
    // 定义输出流,以便打开保存对话框
    OutputStream os = response.getOutputStream();// 取得输出流
    response.reset();// 清空输出流
    response.setHeader("Content-disposition", "attachment; filename="
    + new String(fileName.getBytes("GB2312"), "ISO8859-1")
    + ".xls");
    // 设定输出文件头
    response.setContentType("application/msexcel");// 定义输出类型
    // 创建工作簿
    WritableWorkbook workbook = Workbook.createWorkbook(os);
    // 创建工作表
    WritableSheet sheet = workbook.createSheet("Sheet1", 0);
    // 设置纵横打印(默认为纵打)、打印纸
    jxl.SheetSettings sheetset = sheet.getSettings();
    sheetset.setProtected(false);
    // 设置单元格字体
    WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
    WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,
    WritableFont.BOLD);
    // 用于标题居中
    WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);
    wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
    wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
    wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐
    wcf_center.setWrap(false); // 文字是否换行
    // 用于正文居左
    WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
    wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
    wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
    wcf_left.setAlignment(Alignment.CENTRE); // 文字水平对齐
    wcf_left.setWrap(false); // 文字是否换行
    // EXCEL开头大标题
    //sheet.mergeCells(0, 0, 4, 0);
    //sheet.addCell(new Label(0, 0, "区域:", wcf_center));
    // 以下是EXCEL第一行列标题
    for (int i = 0; i <Title.length; i++) {
    sheet.addCell(new Label(i, 0, Title[i], wcf_center));
    }
    // 以下是EXCEL正文数据
    int i = 1;
    for (Detail detail : list) {
    /*BigDecimal total = detail.getTreatmentmoney()
    .add(detail.getRepayment())
    .add(detail.getExperiencemoney())
    .subtract(detail.getReward());
    detail.setSubtotal(total);*/
    int j = 0;
    SimpleDateFormat sdftime = new SimpleDateFormat("yyyy/MM/dd");
    String createtime = null;
    if (detail.getDate() != null) {
    createtime = sdftime.format(detail.getDate());
    }
    sheet.addCell(new Label(j++, i, createtime, wcf_left));
    sheet.addCell(new Label(j++, i, detail.getShopname(), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getAchievement()), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getTreatmentmoney()), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getBalancedue()), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getRepayment()), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getExperiencemoney()), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getReward()), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getSubtotal()), wcf_left));
    if (detail.getContotal() != null) {
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getContotal()), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getContotal().add(detail.getSubtotal())), wcf_left));
    } else {
    sheet.addCell(new Label(j++, i, "0", wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(detail
    .getSubtotal()), wcf_left));
    }

    sheet.addCell(new Label(j++, i, detail.getText(), wcf_left));
    i++;
    }
    //汇总
    BigDecimal achievement=new BigDecimal("0");
    BigDecimal treatmentmoney=new BigDecimal("0");
    BigDecimal balancedue=new BigDecimal("0");
    BigDecimal repayment=new BigDecimal("0");
    BigDecimal experiencemoney=new BigDecimal("0");
    BigDecimal reward=new BigDecimal("0");
    BigDecimal subtotal=new BigDecimal("0");
    BigDecimal contotal=new BigDecimal("0");
    BigDecimal subtotalcontotal=new BigDecimal("0");
    for(Detail detail:list){
    achievement=achievement.add(detail.getTreatmentmoney()).add(detail.getRepayment()).add(detail.getExperiencemoney()).add(detail.getReward());
    treatmentmoney=treatmentmoney.add(detail.getTreatmentmoney());
    balancedue=balancedue.add(detail.getBalancedue());
    repayment=repayment.add(detail.getRepayment());
    experiencemoney=experiencemoney.add(detail.getExperiencemoney());
    reward=reward.add(detail.getReward());
    subtotal=subtotal.add(detail.getSubtotal());
    contotal=contotal.add(detail.getContotal());
    subtotalcontotal=subtotalcontotal.add(detail.getContotal()).add(detail.getSubtotal());
    }
    int j=0;
    sheet.mergeCells(j, i, j+1, i);            //合并单元格
    sheet.addCell(new Label(j++, i, "汇总", wcf_left));
    j=2;
    sheet.addCell(new Label(j++, i, String.valueOf(achievement), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(treatmentmoney), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(balancedue), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(repayment), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(experiencemoney), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(reward), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(subtotal), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(contotal), wcf_left));
    sheet.addCell(new Label(j++, i, String.valueOf(subtotalcontotal), wcf_left));
    sheet.addCell(new Label(j++, i, "汇总", wcf_left));
    // 将以上缓存中的内容写到EXCEL文件中
    workbook.write();
    // 关闭文件

    workbook.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

    当能力支撑不了野心时,就该静下心来学习!
  • 相关阅读:
    126.输入输出深入以及小结
    125.C++输入小结
    124.C++输出小结
    123.static静态函数与类模板
    123.static静态函数和函数模板
    122.模板与友元
    121.类模板当做参数
    120.嵌套类模板
    119.类模板的默认参数规则
    正睿 2019 省选附加赛 Day1 T1 考考试
  • 原文地址:https://www.cnblogs.com/1234cjq/p/5923084.html
Copyright © 2011-2022 走看看