用Fastjson SXSSFWorkbook 实现Excel单sheet与多sheet导出

     鉴于工作需要大数据量(一般10w左右,或者更多数据量)的excel导出功能,由于现有项目中的 XSSFWorkbook包陈旧、以及jackson封装的数据转化不够高效,所以做了一些修改,优化sql查询和数据处理,基本满足导出秒级实现。

直接上代码了(demo)

1.HTML demo

var data = {
    "sfzh" : $("#jsycx_sfzh").val(),
    "cph" : $("#jsycx_cph option:selected").html()||"全部",
    "xm" : $("#jsycx_xm").val(),
    "gsm" : $("#jsycx_gsm option:selected").html()||"全部",
    "fwzh" : $("#jsycx_fwzh").val(),
    "jyxkz" : $("#jsycx_jyxkz").val(),
    "city" : $("#jsycx_city option:selected").html()};
url = "../../tjfx/jsycxxlsx?data=" + JSON.stringify(data) , window.open(url)

HTML页面的处理比较简单,直接就是打开新的页面就行,请求带上需要的参数。

2.Controller demo

/**
	 * 驾驶员导出
	 * @param request
	 * @param data
	 * @param response
	 * @return
	 * @throws IOException
	 */
	@RequestMapping("/jsycxxlsx")
	@ResponseBody
	public String jsycxxlsx(HttpServletRequest request,
			@RequestParam("data") String data, HttpServletResponse response) throws IOException {
		Map<String, Object> paramMap = FastJsonUtil.stringToMap(data);
		String sfzh = String.valueOf(paramMap.get("sfzh"));
		String cph = String.valueOf(paramMap.get("cph"));
		String xm = String.valueOf(paramMap.get("xm"));
		String gsm = String.valueOf(paramMap.get("gsm"));
		String fwzh = String.valueOf(paramMap.get("fwzh"));
		String jyxkz = String.valueOf(paramMap.get("jyxkz"));
		String city = String.valueOf(paramMap.get("city"));
		String a[] = { "身份证号", "姓名", "业户名称","经营许可证号", "服务证号", "车牌号", "资格证有效期止","分值","证照状态" };// 导出列明
		String b[] = { "ID_NUMBER", "NAME", "COMPANY_NAME","COMPANY_LICENSE_NUMBER", "VEHICLE_ID", "PLATE_NUMBER", "VALID_PERIOD_END","ASSESS_SCORE","STATUS_NAME" };// 导出map中的key
		String gzb = "驾驶员信息";// 导出sheet名和导出的文件名
		String msg = tjfxService.jsycxxlsx(sfzh, cph, xm, gsm,fwzh,jyxkz,city);
		List<Map<String, Object>> list = DownloadAct.strlist(msg);// 导出的数据
		downloadAct.download(request, response, a, b, gzb, list);
		return null;
	}

Controller主要是设置表名 列名 列参数 以及FastJsonUtil解析request参数进行sql查询,具体的sql执行方法就不贴了这个,最后返回的是封装好的FastJsonUtil的Json字符串msg。

3.DownloadAct.strlist方法 demo

/**
     * json字符串转换成List<Map>集合  
     * json字符串格式 [{a:null,b:null}]
     * @return
     * @author erxi
     * @date : 2018年12月3日 下午2:22:40
     */
    public static List<Map<String, Object>> strlist(String jsonString) {
       List<Map<String, Object>> list = null;
        try {
            list = JSON.parseObject(jsonString, new TypeReference<List<Map<String, Object>>>() {});
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

这是FastJsonUtil封装类中的其中一个json字符串转成List<Map>集合的格式,后面会贴出自己封装的FastJsonUtil类。

4.downloadAct.download方法  demo

/**
     * demo返回http响应
     * @param request
     * @param response
     * @param a
     * @param b
     * @param gzb
     * @param list
     * @return
     * @throws IOEx
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值