文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java如何实现将excel表格数据解析成JSONArray

2023-06-02 23:26

关注

这篇文章给大家分享的是有关java如何实现将excel表格数据解析成JSONArray的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

程序主体:


  1.     public static final int HEADER_VALUE_TYPE_O = 1;

  2.     

  3.     public static ExcelToJson getExcelToJson() {

  4.         return new ExcelToJson();

  5.     }

  6.     

  7.     public JSONArray readExcel(File file, int headerIndex, int headType) {

  8.         List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>();

  9.         if (!fileNameFileter(file)) {

  10.             return null;

  11.         } else {

  12.             try {

  13.                 WorkbookFactory factory = new WorkbookFactory();

  14.                 Workbook workbook = factory.create(file);

  15.                 Sheet sheet = workbook.getSheetAt(0);

  16.                 Row headerRow = getHeaderRow(sheet, headerIndex);

  17.                 FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();

  18.                 for (int r = headerIndex + 1; r < sheet.getLastRowNum() + 1; r++) {

  19.                     Row dataRow = sheet.getRow(r);

  20.                     Map<String, Object> map = new HashMap<String, Object>();

  21.                     for (int h = 0; h < dataRow.getLastCellNum(); h++) {

  22.                         String key = getHeaderCellValue(headerRow, h, headType);

  23.                         Object value = getCellValue(dataRow, h, formulaEvaluator);

  24.                         if (!key.equals("") && !key.equals("null") && key != null) {

  25.                             map.put(key, value);

  26.                         }

  27.                     }

  28.                     lists.add(map);

  29.                 }

  30.             } catch (Exception e) {

  31.                 e.printStackTrace();

  32.             }

  33.         }

  34.         JSONArray jsonArray = JSONArray.fromObject(lists);

  35.         return jsonArray;

  36.     }

  37.     

  38.     public boolean fileNameFileter(File file) {

  39.         boolean endsWith = false;

  40.         if (file != null) {

  41.             String fileName = file.getName();

  42.             endsWith = fileName.endsWith(".xls") || fileName.endsWith(".xlsx");

  43.         }

  44.         return endsWith;

  45.     }

  46.     

  47.     public Row getHeaderRow(Sheet sheet, int index) {

  48.         Row headerRow = null;

  49.         if (sheet != null) {

  50.             headerRow = sheet.getRow(index);

  51.         }

  52.         return headerRow;

  53.     }

  54.     

  55.     public String getHeaderCellValue(Row headerRow, int cellIndex, int type) {

  56.         Cell cell = headerRow.getCell(cellIndex);

  57.         String headerValue = null;

  58.         if (cell != null) {

  59.             if (HEADER_VALUE_TYPE_O == type) {

  60.                 headerValue = cell.getRichStringCellValue().getString();

  61.             }

  62.         }

  63.         return headerValue;

  64.     }

  65.     

  66.     public Object getCellValue(Row row, int cellIndex, FormulaEvaluator formulaEvaluator) {

  67.         Cell cell = row.getCell(cellIndex);

  68.         if (cell != null) {

  69.             switch (cell.getCellType()) {

  70.                 //String

  71.                 case Cell.CELL_TYPE_STRING:

  72.                     return cell.getRichStringCellValue().getString();

  73.                 //Number

  74.                 case Cell.CELL_TYPE_NUMERIC:

  75.                     if (DateUtil.isCellDateFormatted(cell)) {

  76.                         return cell.getDateCellValue().getTime();

  77.                     } else {

  78.                         return cell.getNumericCellValue();

  79.                     }

  80.                     //boolean

  81.                 case Cell.CELL_TYPE_BOOLEAN:

  82.                     return cell.getBooleanCellValue();

  83.                 //公式

  84.                 case Cell.CELL_TYPE_FORMULA:

  85.                     return formulaEvaluator.evaluate(cell).getNumberValue();

  86.                 default:

  87.                     return null;

  88.             }

  89.         }

  90.         return null;

  91.     }

测试方法:

  1.     public static void main(String[] args) {

  2.         File file = new File("C:\\a.xls");

  3.         ExcelToJson excelToJson = getExcelToJson();

  4.         JSONArray jsonArray = excelToJson.readExcel(file, 0, 1);

  5.         System.out.println(jsonArray.toString());

  6.     }

依赖的jar包:

  1.         <!--POI-->

  2.         <dependency>

  3.             <groupId>org.apache.poi</groupId>

  4.             <artifactId>poi</artifactId>

  5.             <version>3.15</version>

  6.         </dependency>

  7.         <dependency>

  8.             <groupId>org.apache.poi</groupId>

  9.             <artifactId>poi-ooxml</artifactId>

  10.             <version>3.15</version>

  11.         </dependency>

  12.         <!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl -->

  13.         <dependency>

  14.             <groupId>net.sourceforge.jexcelapi</groupId>

  15.             <artifactId>jxl</artifactId>

  16.             <version>2.6.12</version>

  17.         </dependency>

感谢各位的阅读!关于“java如何实现将excel表格数据解析成JSONArray”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯