使用阿里 EasyExcel 读写 Excel 文件

首先 pom.xml 引入依赖,EasyExcel 版本更新快,不同版本 API 均有不同,有些已经废弃。

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>2.0.0</version>
</dependency>

EasyExcel 高度封装了 Excel 的操作,下面是读取一个 Excel,其包含表头,内容行:

public void importSynonyms(MultipartFile file, String type) throws Exception {
	ExcelListener<SynonymModel> listener = new ExcelListener<>();
	try {
		EasyExcelFactory.read(file.getInputStream(), SynonymModel.class, listener).sheet(0).doRead();
	} catch (Exception e) {
		logger.info(e.getMessage());
	}
	List<SynonymModel> rows = listener.getRows();
	...
    // 完成 Excel到映射类对象的反射,可以进行业务逻辑处理了
}

为了顺利解析EasyExcel 并反射成 java 对象,需要定义目标映射类,并且实现 AnalysisEventListener 接口,该接口对 Excel 每一行进行解析,并提供事件钩子和辅助方法。下面是映射类,注意 index 必须 0-based,其值和 Excel 文件列的序号一致。

监听接口负责解析 Excel,逐行解析并反射成映射类对象。

下面是用 EasyExcel 导出数据:

public void exportConceptMapping(int id, HttpServletResponse resp){
	List<ConceptMappingList> data = new ArrayList<>();
	// 处理 data 数据
	WriteSheet sheet = new WriteSheet();
	WriteTable table = new WriteTable();
	List<List<String>> head = new ArrayList<>();
	List<String> col = new ArrayList<>();
	col.add("列名 1");
	head.add(col);
	List<String> col2 = new ArrayList<>();
	col2.add("列名 2");
	head.add(col2);
	table.setHead(head);
	try {
		try (BufferedOutputStream ops = new BufferedOutputStream(resp.getOutputStream())) {
			resp.setContentType("application/x-xls");
			resp.addHeader("Content-Disposition", "attachment;filename=test.xlsx");
			resp.setCharacterEncoding("UTF-8");
			
			ExcelWriter writer = EasyExcelFactory.write(ops).build();
			writer.write(data, sheet, table);
			writer.finish();
		}
	} catch (IOException e) {
		e.printStackTrace();
		throw new RuntimeException("导出文件出错:" + e.getMessage());
	}
}

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyExcel是一个开源的excel处理框架,可以用于读取和写入Excel文件使用EasyExcel读取Excel文件的步骤如下: 1. 创建一个ExcelReader对象,指定要读取的Excel文件路径和要映射的实体类。例如: ```java ExcelReader reader = EasyExcel.read("/path/to/file.xlsx", MyModel.class, new MyListener()).build(); ``` 这里的`MyModel`是你自定义的实体类,用于映射Excel文件中的数据。 2. 调用`reader.read()`方法读取Excel文件中的数据。 3. 最后,记得调用`reader.finish()`方法关闭reader对象。 通过以上步骤,你可以使用EasyExcel读取Excel文件中的数据。 #### 引用[.reference_title] - *1* [JAVA 使用阿里EasyExcel完成对Excel文件进行读写操作](https://blog.csdn.net/weixin_43878332/article/details/112808392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [EasyExcel轻松读取Excel文件!](https://blog.csdn.net/qq_48607414/article/details/128250637)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值