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

devtools/2024/12/23 11:56:51/

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

java">         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(这个方法就会抛出类型不匹配的错误.)
为了解决这个常见问题. 写了这个工具类

java">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类型就这样使用

java">ExcelUtil.getCellValueString(row.getCell(2));

取double类型就这样使用

java">ExcelUtil.getCellValueNumber(row.getCell(3));

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


http://www.ppmy.cn/devtools/144679.html

相关文章

Jenkins持续集成部署——jenkins安装

前言 Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI)和持续交付(CD)。它为软件开发团队提供了一个易于使用的平台来自动化构建、测试和部署应用程序的过程。 Jenkins 主要功能 1. 持续集成 (CI) 自动构建…

Vue3:uv-upload图片上传

效果图&#xff1a; 参考文档&#xff1a; Upload 上传 | 我的资料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生态框架 (uvui.cn) 代码&#xff1a; <view class"greenBtn_zw2" click"handleAddGroup">添加班级群</vie…

【系统移植】制作SD卡启动——将uboot烧写到SD卡

在开发板上启动Linux内核&#xff0c;一般有两种方法&#xff0c;一种是从EMMC启动&#xff0c;还有一种就是从SD卡启动&#xff0c;不断哪种启动方法&#xff0c;当开发板上电之后&#xff0c;首先运行的是uboot。 制作SD卡启动&#xff0c;首先要将uboot烧写到SD卡&#xff…

模仿elementui的Table,实现思路

vue2子组件使用render&#xff0c;给子子组件插槽传值 和elementui的Table一样使用render 在 Vue 2 中&#xff0c;子组件使用render函数向子子组件插槽传值可以通过以下步骤实现&#xff1a; 1、创建子组件 首先创建一个子组件&#xff0c;在子组件中使用render函数来渲染内容…

asyncio入门指南

本篇文章可以当作是官方文档的总结和补充&#xff0c;详细的API&#xff0c;还是需要看官方文档。一遍一遍看&#xff0c;每看都会有不同的收获。下面进行真题&#xff0c;发车&#xff01; 1.为什么需要asyncio asyncio库为我们提供了并发的能力。 当我们执行一个需要大量i…

【人工智能】用Python实现情感分析:从简单词典到深度学习方法的演进

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 情感分析是自然语言处理(NLP)中的一个重要任务,其目的是通过分析文本内容,识别出其中的情感极性,如正面、负面或中性。随着技术的不断…

电脑开机提示error loading operating system怎么修复?

前一天电脑还能正常运行&#xff0c;但今天启动时却显示“Error loading operating system”&#xff08;加载操作系统错误&#xff09;。我已经仔细检查了硬盘、接线、内存、CPU和电源&#xff0c;确认这些硬件都没有问题。硬盘在其他电脑上可以正常使用&#xff0c;说明不是硬…

【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析

目录 一、前言 二、Spring Boot 简介 三、Spring Boot 核心模块 四、Spring Boot 项目实战&#xff1a;构建一个简单的 RESTful API 1. 创建 Spring Boot 项目 2. 配置数据库 3. 创建实体类 4. 创建 JPA 仓库接口 5. 创建服务层 6. 创建控制器层 7. 测试 API 8. 运…