Java读取Excel数据并转换成Json格式

本文介绍了如何使用Java处理.xls和.xlsx格式的Excel文件,并将其转换为Json格式。对于.xls文件,使用了jexcel和fastjson库,而对于.xlsx文件,由于jexcel不支持,因此采用了poi-ooxml中的XSSF。详细讲述了添加dependency、获取Workbook、Sheet、Cell的过程,以及处理数字Cell避免异常的方法。
摘要由CSDN通过智能技术生成

一、操作.xls后缀的Excel

(使用jexcel和fastjson)
1、添加dependency

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.7</version>
        </dependency>
        <dependency> 
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.10</version>
        </dependency>

2、代码流程主要是:
获取文件Workbook;
通过序号(从0开始)获取表Sheet;
通过列数、行数(从0开始)获取单个Cell;
从Cell中获取内容,put进json对象JSONObject;
add进json列表JSONArray;
关闭Workbook;
我操作的是这样一个表:
这里写图片描述

package ExcelToJson;

import java.io.File;
import java.io.IOException;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl
好的,我可以回答这个问题。您可以使用第三方库,如Apache POI,读取Excel表格并将其转化为JSON数据。以下是Java代码示例: ```java // 导依赖 import org.apache.poi.ss.usermodel.*; import org.json.*; import java.io.*; import java.util.*; public class ExcelToJsonConverter { public static void main(String[] args) throws Exception { // 读取Excel文件 Workbook workbook = WorkbookFactory.create(new File("data.xlsx")); // 读取一个工作表 Sheet sheet = workbook.getSheetAt(0); // 获取表头行 Row headerRow = sheet.getRow(0); // 遍历每一行 JSONArray rows = new JSONArray(); for (int i = 1; i < sheet.getLastRowNum() + 1; i++) { Row row = sheet.getRow(i); JSONObject obj = new JSONObject(); // 遍历每一列 for (int j = 0; j < row.getLastCellNum(); j++) { Cell cell = row.getCell(j); String columnName = headerRow.getCell(j).getStringCellValue(); obj.put(columnName, getCellValue(cell)); } rows.put(obj); } // 输出JSON数据 System.out.println(rows.toString()); } // 获取单元格的 private static Object getCellValue(Cell cell) { switch (cell.getCellType()) { case BLANK: return null; case BOOLEAN: return cell.getBooleanCellValue(); case ERROR: throw new RuntimeException("Cell contains an error"); case NUMERIC: return cell.getNumericCellValue(); case STRING: return cell.getStringCellValue(); case FORMULA: return getCellValue(cell.getCachedFormulaResultType() == CellType.NUMERIC ? cell : cell.getSheet().getRow(cell.getRowIndex()).getCell(cell.getColumnIndex())); default: throw new RuntimeException("Cell type not supported"); } } } ``` 请注意,此代码示例仅适用于Excel表格的简单数据类型,如字符串、数字和布尔。对于复杂数据类型,如日期和时间,您需要编写自定义的转换逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值