HAP——使用工具类导出Excel

这里我还只是能导出数据库中全部的数据,没有能够按条件查询数据然后导出,如果有需要可以参考导出EX

前端:

按钮:

     <div class="pull-left" id="toolbar-btn2" style="padding-bottom:10px;">
                    <span class="btn btn-primary" style="margin:0 2px;float: left; width: 70px"
                          data-bind="click:queryGrid" type="submit"><@spring.message "hap.query"/></span>
                    <span class="btn btn-default" style="margin:0 2px;float: left; width: 70px" data-bind="click:resetForm" type="button"><@spring.message "hap.reset"/></span>
                    <span class="btn btn-success" style="float:left;margin-right:5px;"
                          onclick="exportExcelFunction()" ><i class="fa fa-file-excel-o" style="margin-right:3px;"></i><@spring.message "导出Excel"/></span>
                </div>
                <script>kendo.bind($('#toolbar-btn2'), viewModel);</script>

js:

我用多条件没有能够成功,这里可以不用传参数,使用的时候可以去掉

function exportExcelFunction() {
        //1)执行exportMethod方法传递参数param
        var companyId=viewModel.model.get("companyId");
        var customerId=viewModel.model.get("customerId");
        var orderNumber=viewModel.model.get("orderNumber");
        var inventoryItemId=viewModel.model.get("inventoryItemId");
        var orderStatus =viewModel.model.get("orderStatus");
        // var inputParam = [
        //     {name:"companyId",value:companyId},
        //     {name:"customerId",value:"customerId"},
        //     {name:"orderNumber",value:"orderNumber"},
        //     {name:"inventoryItemId",value:"inventoryItemId"},
        //     {name:"orderStatus",value:"orderStatus"}
        //     ];
        var url = '${base.contextPath}/hap/om/order/headers/exportExcel?${_csrf.parameterName}=${_csrf.token}&companyId='+companyId+'&customerId='+customerId+'&orderNumber='+orderNumber+'&inventoryItemId'+inventoryItemId+'&orderStatus'+orderStatus;
        // $.ajax({
        //     type:'POST',
        //     data:JSON.stringify(inputParam),
        //     contentType :'application/json',
        //     dataType:'json',
        //     url :url,
        //     success :function(data) {
                window.location.href = url;
        // },
        //     error :function(e) {
        //         alert("error");
        //     }})
    }

controller 层

    /**
     * 导出Ex
     *
     * @param request
     * @param response
     */
    @RequestMapping(value = "/hap/om/order/headers/exportExcel")
    @ResponseBody
    public void exportExcel(HttpServletRequest request, HttpServletResponse response) {

        IRequest requestContext = createRequestContext(request);
//        System.out.println(headers);
        //生成excel文件
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
        HSSFSheet sheet = hssfWorkbook.createSheet("头行数据");

        //设置表头
        HSSFRow headRow = sheet.createRow(0);//表头在第0行
        headRow.createCell(0).setCellValue("销售订单号");//第一列
        headRow.createCell(1).setCellValue("公司名称");//第二列
        headRow.createCell(2).setCellValue("客户名称");//第三列
        headRow.createCell(3).setCellValue("订单日期");//第四列
        headRow.createCell(4).setCellValue("订单状态");
        headRow.createCell(5).setCellValue("物料编码");
        headRow.createCell(6).setCellValue("物料描述");
        headRow.createCell(7).setCellValue("数量");
        headRow.createCell(8).setCellValue("销售单价");
        headRow.createCell(9).setCellValue("金额");

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
//        //查询所有数据selectHeader
        List<OmOrderHeaders> headers = service.selectAllHeader(); // 头数据
//        String companyId2 = request.getParameter("companyId");
//        Long companyId = Long.valueOf(request.getParameter("companyId"));
//        String customerId2 = request.getParameter("customerId");
//        Long customerId = Long.valueOf(request.getParameter("customerId"));
//        String orderNumber = request.getParameter("orderNumber");
//        String inventoryItemId2 = request.getParameter("inventoryItemId");
//        Long inventoryItemId = Long.valueOf(inventoryItemId2);
//       String orderStatus =  request.getParameter("orderStatus");

//        System.out.println("companyId2出现了+=VVVVVVVVVVVV" + companyId2);
        //存入表格数据
        for (OmOrderHeaders header : headers) {
//                if (companyId == header.getCompanyId()) {
                    // 行部分
                    List<OmOrderLines> lines = omOrderLinesService.selectLineByHeaderId(header.getHeaderId());
                    for (OmOrderLines line : lines) {
                        HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
                        // 头部分
                        // 销售订单号
                        dataRow.createCell(0).setCellValue(header.getOrderNumber());
                        // 公司名称
                        dataRow.createCell(1).setCellValue(header.getCompanyName());
                        // 客户名称
                        dataRow.createCell(2).setCellValue(header.getCustomerName());
                        // 订单日期
                        dataRow.createCell(3).setCellValue(simpleDateFormat.format(header.getOrderDate()).toString());
                        // 订单状态
                        dataRow.createCell(4).setCellValue(header.getOrderStatus());
                        // 物料编码
                        dataRow.createCell(5).setCellValue(line.getInventoryItemId());
                        // 物料描述
                        dataRow.createCell(6).setCellValue(line.getItemDescription());
                        // 数量
                        dataRow.createCell(7).setCellValue(line.getOrderdQuantity());
                        // 销售单价
                        dataRow.createCell(8).setCellValue(line.getUnitSellingPrice());
                        // 金额
                        dataRow.createCell(9).setCellValue(line.getUnitSellingPrice() * line.getOrderdQuantity());
                    }
//                }

        }

        //下载导出,设置头信息
        String filename = "订单头数据.xls";
        String mimeType = request.getServletContext().getMimeType(filename);
        response.setContentType(mimeType);
        //获取客服端浏览器类型
        try {
            filename = ExcelUtils.encodeChineseDownloadFileName(request, filename);
            response.setHeader("content-disposition", "attachment;filename=" + filename);

            ServletOutputStream outputStream = response.getOutputStream();
            hssfWorkbook.write(outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

工具类

package hbi.core.sales.Util;



import com.itextpdf.text.Font;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;

import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;

public class ExcelUtils {
    private static int width = 256*14;
    //默认字体
    private static String excelfont = "微软雅黑";

    private final static String excel2003L =".xls";    //2003- 版本的excel
    private final static String excel2007U =".xlsx";   //2007+ 版本的excel

    /**
     * 对文件流输出下载的中文文件名进行编码 屏蔽各种浏览器版本的差异性
     * @throws UnsupportedEncodingException
     */
    public static String encodeChineseDownloadFileName(
            HttpServletRequest request, String pFileName) throws Exception {

        String filename = null;
        String agent = request.getHeader("USER-AGENT");
        if (null != agent){
            if (-1 != agent.indexOf("Firefox")) {//Firefox
                filename = "=?UTF-8?B?" + (new String(org.apache.commons.codec.binary.Base64.encodeBase64(pFileName.getBytes("UTF-8"))))+ "?=";
            }else if (-1 != agent.indexOf("Chrome")) {//Chrome
                filename = new String(pFileName.getBytes(), "ISO8859-1");
            } else {//IE7+
                filename = java.net.URLEncoder.encode(pFileName, "UTF-8");
                filename = filename.replace("+", "%20");
            }
        } else {
            filename = pFileName;
        }
        return filename;
    }


    public static PdfPCell buildCell(String content, Font font) throws Exception {
        Phrase phrase = new Phrase(content, font);
        PdfPCell cell = new PdfPCell();
        cell.setPhrase(phrase);
        return cell;
    }





}

猜你喜欢

转载自blog.csdn.net/qq_35136982/article/details/82025063