关于Java poi getCell 为null

废话少说,
个人最近一直在弄Excle和Java JTable的交互,
有时下面这个语句会偶尔报null的错误
cell = row.getCell(1);

原因目前总结如下:
1.无论在JTable还是poi操作的Excle中行和列都是从0开始的,
2.这个比较偏,Excle中你看到的空单元格其实有两种情况
(1)这是一个内容为“”的单元格
(2)该单元格已经被删除了,所以你读取它会返回null
遇到第二种情况我的解决办法是在报空的单元格里输入一个字符(非空格)然后保存,然后再用退格件删除内容
注意不要用Delete键删除整个单元格,好像会把单元格删了,然后又会报null了。


下面是使用Apache POI导入Excel的Java工具类示例: ```java import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelUtils { /** * 读取Excel文件,返回一个二维数组 * * @param filePath Excel文件路径 * @param sheetName 工作表名称 * @return 二维数组 * @throws IOException */ public static String[][] readExcel(String filePath, String sheetName) throws IOException { Workbook workbook = null; InputStream inputStream = new FileInputStream(filePath); if (filePath.endsWith(".xls")) { workbook = new HSSFWorkbook(inputStream); } else if (filePath.endsWith(".xlsx")) { workbook = new XSSFWorkbook(inputStream); } else { throw new RuntimeException("不支持的文件格式"); } Sheet sheet = workbook.getSheet(sheetName); int rowCount = sheet.getPhysicalNumberOfRows(); int columnCount = sheet.getRow(0).getPhysicalNumberOfCells(); String[][] data = new String[rowCount - 1][columnCount]; for (int i = 1; i < rowCount; i++) { Row row = sheet.getRow(i); for (int j = 0; j < columnCount; j++) { Cell cell = row.getCell(j); data[i - 1][j] = cell.toString(); } } workbook.close(); inputStream.close(); return data; } } ``` 使用示例: ```java String filePath = "path/to/excel/file.xlsx"; String sheetName = "Sheet1"; String[][] data = ExcelUtils.readExcel(filePath, sheetName); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值