读取Excel表格以JSON形式数据输出

举报
轻狂书生FS 发表于 2020/12/02 22:36:54 2020/12/02
5.7k+ 0 0
【摘要】  第一步先导入以下包 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactI...

 第一步先导入以下包


        <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.7</version>
      </dependency>
      <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.13</version>
      </dependency>
      <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.17</version>
      </dependency>
  
 

第二步编写逻辑代码


      import com.alibaba.fastjson.JSONArray;
      import com.alibaba.fastjson.JSONObject;
      import org.apache.poi.hssf.usermodel.HSSFWorkbook;
      import org.apache.poi.ss.usermodel.Row;
      import org.apache.poi.ss.usermodel.Workbook;
      import org.apache.poi.ss.usermodel.Sheet;
      import org.apache.poi.xssf.usermodel.XSSFWorkbook;
      import java.io.FileInputStream;
      import java.util.HashMap;
      import java.util.Map;
      /**
       * @Author: 轻狂书生FS
       * @Description: 读取Excel表格
       * @CreateDate: 2019/3/27 18:04
       * @Version: 1.0
      */
      public class ExcelToJsonUtil {
      public static void main(String[] args) {
       ExcelToJsonUtil excelToJsonUtil = new ExcelToJsonUtil();
       Object object = excelToJsonUtil.ExcelToJson("D:\\表格导入\\1222.xls",null,7);
       System.out.println(object);
       }
      public JSONArray ExcelToJson(String filePath){
      return this.ExcelToJson(filePath,null,null);
       }
      /**
       * @Author: 轻狂书生FS
       * @Description: 读取Excel表格以json形式返回
       * @params filePath:文件路径,startSheet:读取第几个sheet,startRow:从第几行开始读
       * @return
       * @CreateDate: 2019/3/27 18:06
       * @Version: 1.0
       */
      public JSONArray ExcelToJson(String filePath,Integer startSheet,Integer startRow) {
      // 设置默认值0
      if (startSheet == null) {
       startSheet = 0;
       }
      if (startRow == null) {
       startRow = 0;
       }
       Workbook workbook = null;
       JSONArray jsons = new JSONArray();
      try {
      //适配xls格式和xlsx格式
      if (filePath.endsWith(".xls")) {
       workbook = new HSSFWorkbook(new FileInputStream(filePath));
       } else if (filePath.endsWith(".xlsx")) {
       workbook = new XSSFWorkbook(new FileInputStream(filePath));
       }
       } catch (Exception e) {
       e.printStackTrace();
       }
       Sheet sheet = workbook.getSheetAt(startSheet);
      // 第startRow行,是表头部分
       Row row0 = sheet.getRow(startRow);
       Map<Integer, String> map = new HashMap<>();
      // 将表头的值放进map里面
      for (int i = 0; i < row0.getLastCellNum(); i++) {
       map.put(i, row0.getCell(i).toString());
       }
      for (int i = startRow + 1; i < sheet.getLastRowNum(); i++) {
       Row row = sheet.getRow(i);
       JSONObject object = new JSONObject();
      // 读取的行不能为空且读取的列数等于表头的列数
      if ( row != null && map.size() == row.getLastCellNum() ) {
      for (int j = 0; j < row.getLastCellNum(); j++) {
       object.put(map.get(j),row.getCell(j).toString());
       }
       jsons.add(object);
       }
       }
      return jsons;
       }
      }
  
 

第一次写工具类,不足之处请多多指教。谢谢阅读,欢迎转发。求关注

修改版:

如果之前的version是3.17,报错信息为:java.lang.NoSuchFieldError: RETURN_NULL_AND_BLANK

将version3.17替换为3.11即可解决问题。

文章来源: blog.csdn.net,作者:轻狂书生FS,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/LookForDream_/article/details/88851989

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。