使用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);
}
相关推荐
桃园码工3 分钟前
15_HTML5 表单属性 --[HTML5 API 学习之旅]
前端·html5·表单属性
百万蹄蹄向前冲44 分钟前
2024不一样的VUE3期末考查
前端·javascript·程序员
轻口味1 小时前
【每日学点鸿蒙知识】AVCodec、SmartPerf工具、web组件加载、监听键盘的显示隐藏、Asset Store Kit
前端·华为·harmonyos
alikami1 小时前
【若依】用 post 请求传 json 格式的数据下载文件
前端·javascript·json
吃杠碰小鸡2 小时前
lodash常用函数
前端·javascript
emoji1111112 小时前
前端对页面数据进行缓存
开发语言·前端·javascript
泰伦闲鱼2 小时前
nestjs:GET REQUEST 缓存问题
服务器·前端·缓存·node.js·nestjs
m0_748250032 小时前
Web 第一次作业 初探html 使用VSCode工具开发
前端·html
一个处女座的程序猿O(∩_∩)O2 小时前
vue3 如何使用 mounted
前端·javascript·vue.js
m0_748235952 小时前
web复习(三)
前端