在开发过程中,有很多情况下需要我们来实现导入的操作,需要后端将导入的数据做解析,返回给前端,我们可以利用poi来实现一个简单的导入。
1.第一步我们需要将poi的pom导入到我们的项目中。我这里用的4.1,可以用一个适合的版本哈。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
2.依赖导入进来之后,定义一个controller
3.接下来我们直接看核心,我是调用的excelReader.read()方法,可以根据行数来读取数据。
然后遍历这个集合,通过get的方式获取数据,然后放到我们定义的对象里边。因为发现有的导入的时候文件里有特殊字符,我是通过replaceAll()去去除特殊字符,方法有很多哈哈哈。
@Override
public List<ExcelOnlySourceMaterialDetailsVO> importExcel(MultipartFile file) throws IOException {
//存放导入的excel数据
List<ExcelOnlySourceMaterialDetailsVO> listVO = CollUtil.newArrayList();
try (InputStream inputStream = file.getInputStream()) {
// 调用用 hutool 方法读取数据 默认调用第一个sheet
ExcelReader excelReader = ExcelUtil.getReader(inputStream);
//根据行获取数据
List<List<Object>> list = excelReader.read(2);
for (List<Object> row : list) {
ExcelOnlySourceMaterialDetailsVO buyerInfo = new ExcelOnlySourceMaterialDetailsVO();
//获取excel第二行指定列的数据进行填充
buyerInfo.setSerialNumber(row.get(0).toString().replaceAll("\\s*|\r|\n|\t", ""));
buyerInfo.setSupplierName(row.get(1).toString().replaceAll("\\s*|\r|\n|\t", ""));
buyerInfo.setSupplierType(row.get(2).toString().replaceAll("\\s*|\r|\n|\t", ""));
listVO.add(buyerInfo);
}
} catch (Exception e) {
throw new RuntimeException("导入出错:" + e.getMessage());
}
return listVO;
}
4.接下来测试一下数据是不是可以正常拿到,需要先定义一个excel文件,(我的开发过程中,是需要先下载一个模板)。
数据取到了,然后set到要返回的对象里就可以啦。java导入excel的方法有很多种。有没有大佬有其它更好的方法呀,望指正呢。