189 8069 5689

Java中怎么将Excel读取成List对象数组

Java中怎么将Excel读取成List对象数组,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联建站主要从事网站建设、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务松山,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

导入POM包



  org.apache.poi
  poi
  ${poi.versin}


  org.apache.poi
  poi-ooxml
  ${poi.versin}

   

2.2 根据文件流创建一个Workbook

可以使用WorkbookFactory自动根据Excel类型是XLSX还是XLS自动创建对应的Workbook

File file = new File(filePath + File.separator + fileName);
FileInputStream inputStream = new FileInputStream(file);
// 使用工厂模式 根据文件扩展名 创建对应的Workbook
Workbook workbook = WorkbookFactory.create(inputStream);
   

2.3 获取确定sheet页的数据

根据 sheet 页的名字获取 sheet 页数据

Sheet sheet = workbook.getSheet(sheetName);
   

2.4 获取总的数据行数

Sheet 类提供了获取首行行号和最后一行行号的方法,可以根据这两个方法获取 sheet 页中的数据行数。

int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum();
   

2.5 获取行列数据封装到Map中

如果只需要返回Map数据,到这里就可以返回结果

for (int i = 1; i < rowCount + 1; i++) {
    Row row = sheet.getRow(i);
    resultMap = new HashMap<>();
    for (int j = 0; j < row.getLastCellNum(); j++) {
        if(Objects.equals(row.getCell(j).getCellType(), CellType.STRING)) {
            resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j).getStringCellValue());
          } else if(Objects.equals(row.getCell(j).getCellType(), CellType.NUMERIC)) {
                resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j).getNumericCellValue());
          }else {
                resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j));
                }
      }
      jsonObject = new JSONObject(resultMap);
      resultMapList.add(jsonObject.toJSONString());
}
   

2.6 将结果数据转成List对象

使用 fasterxml.jackson 将Map结果数据转成 List 对象

return JsonUtil.ofList(resultMapList.toString(), tClass);
   

完整代码如下

/**
 * 获取Excel,将数据转换成 List 的形式
 * Excel 数据要求第一行为对象的属性名称
 *
 * @param filePath  文件路径
 * @param fileName  文件名称
 * @param sheetName sheet名称
 * @param tClass    要转换成的实体类
 * @param 
 * @return List对象数组
 * @throws IOException
 */
public static  List readExcelOfList(String filePath, String fileName, String sheetName, Class tClass) throws IOException {
    List resultMapList = new ArrayList<>();
    File file = new File(filePath + File.separator + fileName);
    FileInputStream inputStream = new FileInputStream(file);
    // 使用工厂模式 根据文件扩展名 创建对应的Workbook
    Workbook workbook = WorkbookFactory.create(inputStream);
    Sheet sheet = workbook.getSheet(sheetName);
    int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum();
    JSONObject jsonObject;
    Map resultMap;
    for (int i = 1; i < rowCount + 1; i++) {
        Row row = sheet.getRow(i);
        resultMap = new HashMap<>();
        for (int j = 0; j < row.getLastCellNum(); j++) {
            if(Objects.equals(row.getCell(j).getCellType(), CellType.STRING)) {
                resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j).getStringCellValue());
            } else if(Objects.equals(row.getCell(j).getCellType(), CellType.NUMERIC)) {
                resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j).getNumericCellValue());
            }else {
                resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j));
            }
        }
        jsonObject = new JSONObject(resultMap);
        resultMapList.add(jsonObject.toJSONString());
    }
    return JsonUtil.ofList(resultMapList.toString(), tClass);
}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


名称栏目:Java中怎么将Excel读取成List对象数组
分享网址:http://cdxtjz.cn/article/jeeegi.html

其他资讯