row.getCell()获取单元格为null,空指针异常

本文介绍了一种在Excel中处理单元格的方法:当单元格为空时使用createCell方法创建单元格并赋值;当单元格已有值时,则直接通过getCell方法获取单元格并更新其内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

if(row.getCell(j+3) == null){
    row.createCell(j+3).setCellValue(new HSSFRichTextString(String.valueOf(resultList.get(j))));
}else {
    row.getCell(j+3).setCellValue(new HSSFRichTextString(String.valueOf(resultList.get(j))));
    //之前有值的getCell()可以返回值,之前没有值会返回null
}

  单元格没有值时,getCell方法获取不到单元格,此时要用createCell方法!

try { String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); Path tempFile = Files.createTempFile(System.currentTimeMillis() + "", suffix); file.transferTo(tempFile); // 1、获取文件输入流 InputStream inputStream = file.getInputStream(); Workbook book; String fileName = file.getOriginalFilename(); if (fileName.endsWith("xls")) { book = new HSSFWorkbook(inputStream); }else{ book = new XSSFWorkbook(inputStream); } LambdaQueryWrapper<ZzxQuickTestingTree> lambdaQueryWrapper = new LambdaQueryWrapper(); lambdaQueryWrapper.apply(true, " del_flag = '0' ") .apply(true, "parent_id = -1 " ) .orderByAsc(ZzxQuickTestingTree::getId); List<ZzxQuickTestingTree> treelist = zzxQuickTestingTreeService.list(lambdaQueryWrapper); Map<String,String> treeMap = new HashMap<>(); for (ZzxQuickTestingTree trees:treelist) { treeMap.put(trees.getName(),trees.getType()); } //获取一个工作表(sheet页),下标从0开始 Sheet sheet = book.getSheetAt(0); for (int i = 2; i <= sheet.getLastRowNum() ; i++) { // 获取行数 Row row = sheet.getRow(i); // 获取单元格 取值 if(row.getCell(2) == null || "".equals(row.getCell(2))){ continue; } String value0 = row.getCell(1).getStringCellValue();//样本类型 String value1 = row.getCell(2).getStringCellValue();//标准名称 if(value1 == null || "".equals(value1)){ continue; } String value2 = row.getCell(3).getStringCellValue();//标准编号 String value3 = row.getCell(4).getStringCellValue();//制定机关(多机关以"/"分割) String value4 = row.getCell(5).getStringCellValue();//标准类别 //String value5 = row.getCell(6).getStringCellValue();//实施时间 String value6 = row.getCell(7).getStringCellValue();//时效性 //String value7 = row.getCell(8).getStringCellValue();//公布日期 String value8 = row.getCell(9).getStringCellValue();//手动录入内容或者文档链接地址 String value9 = row.getCell(10).getStringCellValue();//说明 Date value5 =null; if(row.getCell(6) != null && HSSFDateUtil.isCellDateFormatted(row.getCell(6))){ value5 = row.getCell(6).getDateCellValue(); }else{ value5 = DateUtils.parseDate(row.getCell(6).getStringCellValue(),"YYYY-MM-DD"); } Date value7 =null; if(row.getCell(8) != null && HSSFDateUtil.isCellDateFormatted(row.getCell(8))){ value7 = row.getCell(8).getDateCellValue(); }else{ value7 = DateUtils.parseDate(row.getCell(8).getStringCellValue(),"YYYY-MM-DD"); } log.info("获取excel第"+i +"行:" + value1+ ";" + value2+ ";"+ value3+";" + value4+";" + value5+";" + value6+";" + value7+";" + value8+";"); // 判断该名称的标准是否已存在 String value = value1 + " " + value2; Map columnMap = new HashMap(); columnMap.put("lable", value); columnMap.put("del_flag", 0); List<ZzxQuickTestBasis> list = zzxQuickTestBasisService.listByMap(columnMap); /** * 根据标准类型生成唯一标准type值 */ String sampleType = treeMap.get(value0); String type = ""; switch (sampleType){ case "sample_type_1": type = "test_basis_1"; break; case "sample_type_2": type = "test_basis_2"; break; case "sample_type_3": type = "test_basis_3"; break; case "sample_type_4": type = "test_basis_4"; break; } // 根据type查询对应标准最大序号值 int maxTypeValue = zzxQuickTestBasisService.getMaxTypeValue(type); // 在最大序号基础上增加1作为新数据的type序号 } 请根据以上Java代码片段复原出所解析的xlsx表格结构
最新发布
06-05
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值