使用EasyExcel进行导入导出

博客主要围绕Java中使用EasyExcel进行数据导入导出展开。介绍了EasyExcel百万级读取导入功能,还提及导出时的pom依赖以及文件名编码相关内容,为Java开发者处理大量数据的导入导出提供参考。

导入

easyExcel百万级读取导入

导出

pom依赖

	<!-- 引入Easy Excel用于excel文件的读写 -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>easyexcel</artifactId>
		<version>2.0.1</version>
	</dependency> 

文件名编码

    public static String encodeFileName(String fileNames, HttpServletRequest request) {
        String codedFilename = null;
        try {
            String agent = request.getHeader("USER-AGENT");
            if (null != agent && -1 != agent.indexOf("MSIE") || null != agent && -1 != agent.indexOf("Trident") ||
                    null != agent && -1 != agent.indexOf("Edge")) {
                // ie浏览器及Edge浏览器
                String name = URLEncoder.encode(fileNames, "UTF-8");
                codedFilename = name;
            } else if (null != agent && -1 != agent.indexOf("Mozilla")) {
                // 火狐,Chrome等浏览器
                codedFilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return codedFilename;
    }


	@ApiOperation("导出")
	@GetMapping(value = "/exportTemplate")
	public void exportTemplate(HttpServletRequest request, HttpServletResponse response,
							   @RequestParam Long id) throws IOException {
		Map<String, List<List<String>>> data = service.queryFromDataBase(id);
		String fileName = "test";
		String sheetName = fileName;
		fileName = StringUtil.encodeFileName(fileName, request);
		response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
		response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
		List<List<String>> header = new ArrayList<>();
		List<List<String>> content = new ArrayList<>();
		if (data.get("header") != null && data.get("content") != null)
		{
			header = data.get("header");
			content = data.get("content");
		}
		try {
			EasyExcel.write(response.getOutputStream()).head(header).registerWriteHandler(new CustomHandler())
					.sheet(sheetName).doWrite(content);
		} finally {
			response.getOutputStream().close();
		}
	}
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值