使用WorkBook遍历excel,并封装数据到实体类,之后转成json格式给前端使用

一、导入依赖包

sql 复制代码
<dependency>
	  <groupId>commons-io</groupId>
	  <artifactId>commons-io</artifactId>
	  <version>2.15.0</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>5.2.0</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.5</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.5</version>
</dependency>

二、测试类中编写主方法

sql 复制代码
@Test
public void testWord() throws Exception {
   String  excelFilePath= "C:/Users/admin/Desktop/1.xlsx";
    List<bzEntity> users = new ArrayList<>();
    System.out.println(excelFilePath);
    String json = "";
    users = readExcel(excelFilePath);

    json = convertToJson(users);

    System.out.println(json);

}

三、读取excel静态方法

sql 复制代码
public static List<bzEntity> readExcel(String filePath) throws Exception {
    List<bzEntity> users = new ArrayList<>();

    try (FileInputStream fis = new FileInputStream(new File(filePath));
         Workbook workbook = new XSSFWorkbook(fis)) {

        Sheet sheet = workbook.getSheetAt(0); // 假设数据在第一个工作表

        for (Row row : sheet) {
            if (row.getRowNum() == 0 ||row.getRowNum() == 1 ||row.getRowNum() == 2) {
                // 跳过标题行
                continue;
            }

            String xmmc = getStringCellIsNull(row,2);
            String lspq = getStringCellIsNull(row,6);
            String qdpwsj = getDateCellIsNull(row,11);
            String gmsbsj = getDateCellIsNull(row,12);
            String ydyssx = getDateCellIsNull(row,16);
            String wckcdjsj = getDateCellIsNull(row,19);
            String fxpgbasx = getDateCellIsNull(row,22);
            String zqcxzlsx = getDateCellIsNull(row,25);
            String sbcssx = getDateCellIsNull(row,27);
            String  sbjzpzsx= getDateCellIsNull(row,29);
            String wfydcfsx = getDateCellIsNull(row,33);
            String ldshtyssx = getDateCellIsNull(row,35);
            String zgzzsx = getDateCellIsNull(row,41);
            String sbsjsx = getDateCellIsNull(row,43);

            bzEntity bzEntityd = new bzEntity(xmmc,lspq,qdpwsj,gmsbsj,ydyssx,wckcdjsj,
                    fxpgbasx,zqcxzlsx,sbcssx,sbjzpzsx,wfydcfsx,ldshtyssx,zgzzsx,sbsjsx);
            users.add(bzEntityd);
        }
    }

    return users;
}

四、自定义处理excel字符串类型方法

sql 复制代码
public static String getStringCellIsNull(Row row,int index) {
   String stringCellValue;
   try{
       stringCellValue = row.getCell(index).getStringCellValue();
   }catch (Exception e){
       return "";
   }
   return stringCellValue == null ? "" : stringCellValue;

}

五、自定义处理excel日期类型方法

sql 复制代码
public static String getDateCellIsNull(Row row,int index){
//        System.out.println("row:"+row.getRowNum()+"index:"+index);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date dateCellValue;
    try{
        dateCellValue = row.getCell(index).getDateCellValue();
    }catch (Exception e){
        return "";
    }
    return dateCellValue == null ? "" : sdf.format(dateCellValue);
}
相关推荐
李蚊子10 分钟前
从代理提醒到真实响铃:懒熊闹钟的鸿蒙开发实践
前端·harmonyos
IT_陈寒18 分钟前
Redis的Lua脚本居然把我的集群搞崩了!
前端·人工智能·后端
计算机魔术师23 分钟前
索尼与华纳起诉Anthropic,指控其大规模盗用版权音乐训练Claude
前端
恋猫de小郭27 分钟前
AI 时代,一个优化 Flutter 的重复代码工具 Deslop
android·前端·flutter
穗余27 分钟前
Typescript let和var区别
前端·javascript·typescript
晓得迷路了32 分钟前
栗子前端技术周刊第 144 期 - Rspack 2.2、pnpm 12、Solid 2.0 RC...
前端·javascript·css
YHHLAI38 分钟前
前端路由与浏览器历史:从多页应用到单页应用的演进
前端
Escalating_xu1 小时前
【C++类和对象(上)】从类的定义、封装与对象模型到内存对齐和 this 指针
开发语言·前端·c++
Json____1 小时前
宿舍安全卫生检查系统:Node 全栈开发实战
java·前端·数据库·毕业设计·课程设计·毕设·wwwoop.com