欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 【分享-POI工具,Excel字段取值容错小工具】

【分享-POI工具,Excel字段取值容错小工具】

2025/2/24 12:35:56 来源:https://blog.csdn.net/dangkei/article/details/144580164  浏览:    关键词:【分享-POI工具,Excel字段取值容错小工具】

在使用POI导出Excel数据的时候这样

         FileInputStream inputStream = new FileInputStream(file);Workbook workbook = WorkbookFactory.create(inputStream);Sheet sheet = workbook.getSheetAt(0);for (Row row : sheet) {row.getCell(1).getStringCellValue();......}

row.getCell(1).getStringCellValue(); 这里是很容易报错的. 因为excel里的列格式即使设置为文本
当cell内的值是一个纯数字的时候, POI取到的还会是一个double类型的值. getStringCellValue(这个方法就会抛出类型不匹配的错误.)
为了解决这个常见问题. 写了这个工具类

public class ExcelUtil {public static String getCellValueString(Cell cell){if (cell != null) {switch (cell.getCellType()) {case STRING:// 如果单元格内容是字符串类型return cell.getStringCellValue();case NUMERIC:// 如果单元格内容是数字类型double numericValue = cell.getNumericCellValue();return String.valueOf(numericValue); // 转为字符串后设置case BOOLEAN:// 如果单元格内容是布尔值类型boolean booleanValue = cell.getBooleanCellValue();return String.valueOf(booleanValue); // 转为字符串后设置case FORMULA:// 如果单元格是公式String formulaValue = cell.getCellFormula();return formulaValue; // 设置公式字符串default:// 其他类型的处理(如空单元格)return ""; // 设置为空字符串}} else {// 如果单元格为空return ""; // 设置为空字符串}}public static double getCellValueNumber(Cell cell){if (cell == null) {return -4; // 如果单元格为空,返回-1}switch (cell.getCellType()) {case STRING:try {// 尝试将字符串转换为数字return Double.parseDouble(cell.getStringCellValue());} catch (NumberFormatException e) {// 如果字符串不能转换为数字,返回-1return -1;}case NUMERIC:// 如果是数字类型,直接返回数字return cell.getNumericCellValue();case BOOLEAN:// 如果是布尔类型,true转换为1,false转换为0return cell.getBooleanCellValue() ? 1 : 0;case FORMULA:// 如果是公式类型,返回-1return -2;default:// 对于其他类型,返回-1return -3;}}
}

然后我们必须要从cell中取String类型就这样使用

ExcelUtil.getCellValueString(row.getCell(2));

取double类型就这样使用

ExcelUtil.getCellValueNumber(row.getCell(3));

避免excel总是自动转换或者用户输入错误造成的导入数据错误.

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词