精华内容
下载资源
问答
  • 判断单元格的数据类型
    2022-08-30 19:07:48

    1.判断单个单元格为空

    //判断单个单元格是否为空
    public static boolean isEmptyCell(Cell cell){
        return cell == null;
    }
    

    ⚠️:cell.getCellType()和getCellTypeEnum()已经过时
    对于空单元格使用cell.getCellType().equals(CellType.BLANK)判断,也是会抛异常的

    2.设置单元格格式,再获取数据

    cell.setCellType(CellType.STRING);
    cell.getStringCellValue();
    

    ⚠️:先设置单元格格式再取数据是因为,对于数字单元格和非字符串格式的公式单元格会抛异常

    3.获取单元格类型

    cell.getCachedFormulaResultTypeEnum();
    

    4.判断每行列数是否相等问题

    row.getPhysicalNumberOfCells() //获取该行列数
    

    ⚠️:这里想说的问题是,由于excel单元格为空时,该单元格就不计算在内了,因为获取的是物理单元格数量,所以使用该方法要注意

    更多相关内容
  • try { FileInputStream fis = new FileInputStream("D:\\Focus Hospital校验验证数据.xlsx"); Workbook wb = new XSSFWorkbook(fis); Sheet sheet = wb.getSheetAt(0); for (Row row : sheet) { String[] strArray ...
    package org.jeecg.modules.cloud.controller;
    
    import cn.hutool.core.util.ArrayUtil;
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Test {
    
        public static void main(String[] args) {
    //        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            List<String[]> arrayList = new ArrayList<>();
            try {
                FileInputStream fis = new FileInputStream("D:\\Focus Hospital校验验证数据.xlsx");
                Workbook wb = new XSSFWorkbook(fis);
                Sheet sheet = wb.getSheetAt(0);
                for (Row row : sheet) {
                    String[] strArray = new String[9];
                    for (int i = 0; i < 9; i++) {
                        Cell cell = row.getCell(i);
                        FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
                        if (cell != null) {
                            switch (cell.getCellType().name()) {
                                case "STRING":
                                    strArray[i] = cell.getRichStringCellValue().getString();
                                    break;
                                case "NUMERIC":
                                    if("General".equals(cell.getCellStyle().getDataFormatString())){
                                        cell.setCellType(CellType.STRING);
                                        strArray[i] = row.getCell(i).getStringCellValue();
                                    }else {
    //                                此方法用来判断是否为日期
    //                                boolean cellDateFormatted = HSSFDateUtil.isCellDateFormatted(cell);
    //                                if(cellDateFormatted){
                                        strArray[i] = cell.getDateCellValue()+"";
    //                                    strArray[i] = cell.getRichStringCellValue()+"";
    //                                }
    //                                strArray[i] = String.valueOf(cell.getNumericCellValue());
                                        DataFormatter formatter = new DataFormatter();
                                        formatter.getDefaultFormat(cell);
                                        strArray[i] = formatter.formatCellValue(cell, evaluator);
                                    }
                                    break;
                                case "BOOLEAN":
                                    strArray[i] = String.valueOf(cell.getBooleanCellValue());
                                    break;
                                case "BLANK":
                                    strArray[i] = "";
                                    break;
                                default:
                                    strArray[i] = cell.toString();
                                    break;
                            }
                        }else{
                            strArray[i]="";
                        }
                    }
                    /**排除空行*/
                    if(ArrayUtil.isNotEmpty(strArray)){
                        arrayList.add(strArray);
                    }
                }
                System.out.println(arrayList.size());
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    展开全文
  • POI Excel 单元格内容类型判断并取值

    千次阅读 2021-04-17 02:19:57
    poi 取excel单元格内容时,需要判断单元格类型,才能正确取出 以下内容非原创,原文链接http://blog.sina.com.cn/s/blog_4b5bc01101015iuq.html ate String getCellValue(HSSFCell ce ... 随机推荐 django 项目的...

    个人用到的

    String birthdayVal = null;

    switch (cell_2.getCellTypeEnum()) {

    case STRING:

    birthdayVal = cell_2.getRichStringCellValue().getString();

    break;

    case NUMERIC:

    if("General".equals(cell_2.getCellStyle().getDataFormatString())){

    birthdayVal =DateToStr(HSSFDateUtil.getJavaDate(cell_2.getNumericCellValue()));

    }else if("m/d/yy".equals(cell_2.getCellStyle().getDataFormatString())){

    birthdayVal = DateToStr(cell_2.getDateCellValue());

    }else{

    birthdayVal = DateToStr(HSSFDateUtil.getJavaDate(cell_2.getNumericCellValue()));

    }

    break;

    default:

    x = i+1;

    throw new AWSForbiddenException("导入文件的第["+x+"]行的[出生年月]的格式有问题,请检查!",null);

    }

    /**

    * 日期转换成字符串

    */

    public static String DateToStr(Date date) {

    java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");

    String str = format.format(date);

    return str;

    }

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    poi3.5之前的版本

    switch (cell.getCellType()) {

    case HSSFCell.CELL_TYPE_NUMERIC: // 数字

    //如果为时间格式的内容

    if (HSSFDateUtil.isCellDateFormatted(cell)) {

    //注:format格式 yyyy-MM-dd hh:mm:ss 中小时为12小时制,若要24小时制,则把小h变为H即可,yyyy-MM-dd HH:mm:ss

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    value=sdf.format(HSSFDateUtil.getJavaDate(cell.

    getNumericCellValue())).toString();

    break;

    } else {

    value = new DecimalFormat("0").format(cell.getNumericCellValue());

    }

    break;

    case HSSFCell.CELL_TYPE_STRING: // 字符串

    value = cell.getStringCellValue();

    break;

    case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean

    value = cell.getBooleanCellValue() + "";

    break;

    case HSSFCell.CELL_TYPE_FORMULA: // 公式

    value = cell.getCellFormula() + "";

    break;

    case HSSFCell.CELL_TYPE_BLANK: // 空值

    value = "";

    break;

    case HSSFCell.CELL_TYPE_ERROR: // 故障

    value = "非法字符";

    break;

    default:

    value = "未知类型";

    break;

    }

    poi3.5以后版本

    switch (cell.getCellTypeEnum()) {

    case STRING:

    value = cell.getRichStringCellValue().getString();

    break;

    case NUMERIC:

    if("General".equals(cell.getCellStyle().getDataFormatString())){

    value = df.format(cell.getNumericCellValue());

    }else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())){

    value = sdf.format(cell.getDateCellValue());

    }else{

    value = df2.format(cell.getNumericCellValue());

    }

    break;

    case BOOLEAN:

    value = cell.getBooleanCellValue();

    break;

    case BLANK:

    value = "";

    break;

    default:

    value = cell.toString();

    break;

    }

    poi 升级至4&period;x 的问题总结&lpar;POI Excel 单元格内容类型判断并取值&rpar;

    POI Excel 单元格内容类型判断并取值 以前用 cell.getCachedFormulaResultType() 得到 type 升级到4后获取不到了 换为:cell.getCellType( ...

    Excel单元格内容太多会覆盖遮住下一单元格范围

    Excel单元格内容太多会覆盖遮住下一单元格范围分步阅读 Excel中的单元格内容,有着不同的对齐方式.用户可根据自己的需求,在处理数据的时候,自行设置所需要的对齐方式. 当您在处理数据的时候,如果设 ...

    excel 单元格内容太多,替换有问题

    excel 单元格内容太多,替换有问题

    Excel单元格内容拆分、合并

    例:如何将EXCEL单元格A1中的“1-2-1”,在B1.C1.D1单元格中分别显示”1“.”2“.”1“.方法一: 在B1中输入“=mid(A1,1,1)”在C1中输入“=mid(AI,3,1)”在 ...

    excel单元格内容拆分

    这几天在整理数据,但是数据都在表格的一个单元格中,看起来很不方法,所以在网上找到excel单元格内如拆分的方法,并亲测有效 介绍2种拆分的方法 方法一: (1)在B1输入公式=right(text,[ ...

    使用poi导出Excel,并设定单元格内容类型,抛出异常

    本例子使用的是HSSF,为Excel2003提供处理方案. 设定为输入类型为数值 import org.apache.poi.hssf.usermodel.DVConstraint; import o ...

    Excel单元格内容批量加前缀

    比如83190001在A1单元格,要在A列单元内容前面批量加0,在B1输入公式="0"&A1然后向下复制再把B列复制的结果再复制一下:然后到新的一列粘贴,在“粘贴选项”中选 ...

    excel单元格内容合并

    这几天在整理数据,有时候数据都在表格的不同单元格中,想把两格内容合并为一格,于是验证了两种方法 方法一: (1)在B1输入公式=A1&B1 (2)做完第一步后,选中B1后,鼠标移到单元格右下出 ...

    poi 取excel单元格内容时,需要判断单元格的类型,才能正确取出

    以下内容非原创,原文链接http://blog.sina.com.cn/s/blog_4b5bc01101015iuq.html ate String getCellValue(HSSFCell ce ...

    随机推荐

    django 项目的文件说明

    参见官方教程的mysite项目 mysite--- manage.py db.sqlite3 #数据库文件 mysite--- #项目文件夹 __init__.py settings.py urls. ...

    MyBatis学习 之 四、MyBatis配置文件

    目录(?)[-] 四MyBatis主配置文件 properties属性 settings设置 typeAliases类型别名 typeHandlers类型句柄 ObjectFactory对象工厂 pl ...

    Codeforces Gym 100733H Designation in the Mafia flyod

    Designation in the MafiaTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...

    IOS图片的两种处理:加阴影和变灰色

    #import //图片阴影 UIImageView *img; [[img layer] setShadowOffset:CGSize ...

    ArcGis——好好的属性表,咋就乱码了呢?

    我就瞎说一下,反正你也不懂. ——见到许多ArcGis属性表乱码的问题,也见过各种哭笑不得的解说 目录 第一节 字符编码那些事儿→字符编码简述 第二节 都是编码惹的祸→ArcGis属性表出错原因 第三 ...

    【CF526G】Spiders Evil Plan(贪心)

    [CF526G]Spiders Evil Plan(贪心) 题面 洛谷 CodeForces 给定一棵树,要求选择\(y\)条链,满足被链覆盖的所有点在树上联通,且\(x\)必定在联通块中. 对于每次 ...

    vux (scroller)上拉刷新、下拉加载更多

    1)比较关键的地方是要在 scroller 组件上里加一个 ref 属性

    Ubuntu下安装phpMyAdmin

    首先添加必要的apt源 1 apt-get update 确保软件包列表是最新的 apt-get upgrade 更新软件包 安装phpMyAdmin apt-get install phpmyadm ...

    C&period; Permute Digits dfs大模拟

    http://codeforces.com/contest/915/problem/C 这题麻烦在前导0可以直接删除,比如 1001 100 应该输出11就好 我的做法是用dfs,每一位每一位的比较. ...

    展开全文
  • default: value = "未知类型"; break; } POI4.x之后版本(网上版本) 网上搜到的是这种:本人测试后发现这种也不行, ```java switch (cell.getCellType()) { case STRING: value = cell.getRichStringCellValue()....

    **

    POI3.5之前版本

    **

    switch (cell.getCellType()) {
        case HSSFCell.CELL_TYPE_NUMERIC: // 数字
            //如果为时间格式的内容
            if (HSSFDateUtil.isCellDateFormatted(cell)) {      
               //注:format格式 yyyy-MM-dd hh:mm:ss 中小时为12小时制,若要24小时制,则把小h变为H即可,yyyy-MM-dd HH:mm:ss
               SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");  
               value=sdf.format(HSSFDateUtil.getJavaDate(cell.
               getNumericCellValue())).toString();                                 
                 break;
             } else {
                 value = new DecimalFormat("0").format(cell.getNumericCellValue());
             }
            break;
        case HSSFCell.CELL_TYPE_STRING: // 字符串
            value = cell.getStringCellValue();
            break;
        case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
            value = cell.getBooleanCellValue() + "";
            break;
        case HSSFCell.CELL_TYPE_FORMULA: // 公式
            value = cell.getCellFormula() + "";
            break;
        case HSSFCell.CELL_TYPE_BLANK: // 空值
            value = "";
            break;
        case HSSFCell.CELL_TYPE_ERROR: // 故障
            value = "非法字符";
            break;
        default:
            value = "未知类型";
            break;
    }
    

    POI4.x之后版本(网上版本)

    网上搜到的是这种:本人测试后发现这种也不行,

    
    ```java
    switch (cell.getCellType()) {  
        case STRING:  
            value = cell.getRichStringCellValue().getString();  
            break;  
        case NUMERIC:  
            if("General".equals(cell.getCellStyle().getDataFormatString())){  
                value = df.format(cell.getNumericCellValue());  
            }else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())){  
                value = sdf.format(cell.getDateCellValue());  
            }else{  
                value = df2.format(cell.getNumericCellValue());  
            }  
            break;  
        case BOOLEAN:  
            value = cell.getBooleanCellValue();  
            break;  
        case BLANK:  
            value = "";  
            break;  
        default:  
            value = cell.toString();  
            break;  
        }
    

    POI4.x之后版本(亲测有效)

    本人实际项目中也是使用的下面这种形式,亲测有效

    switch (cell.getCellType().name()) {  
        case "STRING":  
            value = cell.getRichStringCellValue().getString();  
            break;  
        case "NUMERIC":  
            if("General".equals(cell.getCellStyle().getDataFormatString())){  
                value = df.format(cell.getNumericCellValue());  
            }else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())){  
                value = sdf.format(cell.getDateCellValue());  
            }else{  
                value = df2.format(cell.getNumericCellValue());  
            }  
            break;  
        case "BOOLEAN":  
            value = cell.getBooleanCellValue();  
            break;  
        case "BLANK":  
            value = "";  
            break;  
        default:  
            value = cell.toString();  
            break;  
        }
    
    
    **本人创建的交流群,欢迎大佬和java学习者加入扣扣群:344635699**
    
    展开全文
  • 在此示例中,我们尝试获取Excel的单元格数据类型,以便我们可以使用正确的方法读取该值。要读取的数据在名为的文件中celltype.xls。下面的矩阵描述了文件的状态。|COLROW|01234----|-------------------------0|12...
  • # 判断是否为整数,正则表达式对数字也不是那么友好,(反正对我来说,不好解决) if type ( a9 ) == int : print ( "%s----数字" % a9 ) else : if type ( a9 ) == float : print ( ...
  • 今天跟大家分享一下Excel如何快速判断单元格数据是否为数字 1.如下图表格中含有部分数据,现在我们想要快速判断这些数据是否为数字。 2.首先我们点击E2单元格 3.然后点击【公式向导】(Excel...
  • POI读取Excel表格数据类型判断与取值

    万次阅读 2018-05-14 17:34:32
    常量说明取值Cell.CELL_TYPE_NUMERIC数值类型cellValue.getNumberValue()Cell.CELL_TYPE_STRING字符串类型cellValue.getStringValue()Cell.CELL_TYPE_BOOLEAN布尔类型cellValue.getBooleanValue()Cell.CELL_TYPE_...
  • 从上一篇文章我们已经可以获取某单元格数据,现在我们只要执行:MsgBox VarType(curCell)就可以获取到类型,完整代码如下: Sub Macro1() ' ' Macro1 Macro ' 宏由 cq 录制,时间: 2016/08/02 x = Sheets("Sheet1...
  • POI读取Excel数据类型判断方法

    千次阅读 2017-07-06 10:40:18
    网上看到许多关于利用POI输出Excel单元格内容的文章,但都是利用Cell.getCellType来获取Excel单元格数据类型,我也利用这个方法 确实可以判断数据类型,Cell.CELL_TYPE_NUMERIC,Cell.CELL_TYPE_FORMULA,Cell....
  • java 解析Excel 并判断解析的数据类型__Eclipse工程,纯手工,无复制
  • 整理了excel中各种格式符号的含义、用法、注意事项和示例,并以此应用于openpyxl设置单元格数值格式。
  • 今天小编就为大家分享一篇Layui数据表格判断编辑输入的值,是否为我需要的类型详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • public String getCellFormatValue(Cell cell,String str ){ if(cell == null){ return ""; } String cellValue = ""; switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: ...
  • 2.复杂读取2.1 单元格类型数据读取2.1.1 基本类型在实际工作中,我们处理的Excel数据都不止限于字符型数据,更多的是数字、日期、甚至公式等。下面是单元格类型说明:类型CELL_TYPE_BLANK空值(cell不为空)CELL_...
  • 今天研究easyexcel,导入依赖后,发现之前的导入excel数据代码出现错误,判断单元格为空的方法爆红了。原来是easyexcel用的高板本poi jar包覆盖了旧的poi版本。而以前的一些方法被废除了。 版本4.0以上废除以下判断...
  • DataGridView有六种列类型,当选择了列类型后对应到该列下的单元格会显示为对应的类型,不过这个类型是设计时指定的,当程序运行时要改变单元格类型还是比较麻烦的。此文来聊一下如何在运行时改变单元格类型。 ...
  • POI获取Excel单元格各种类型的值 使用POI读取Excel表格数据时,因为表格数据可能会存在多种格式的数据,因此读取时需要注意! //获取单元格类型值,返回字符串类型 public static String getCellValueByCell...
  • HSSFCell 读单元格数据类型

    千次阅读 2017-09-07 14:42:33
    String cellValue = ""; DecimalFormat df = new DecimalFormat("#"); switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: cellValue = cell.getRichStri
  • POI 单元格类型CellType

    千次阅读 2019-06-19 08:37:00
    1.单元格类型 单元格的内容决定了单元格的...日期数据对应的单元格类型是CellType.NUMERIC,默认以浮点型数显示,显示为日期格式需要设置单元格样式DataFormat 字符型单元格内容也可以为富文本RichTextString,可...
  • 目前网上能找到Web平台下的读取Excel表格中数据的两种比较好的方案:PageOffice好用开发效率高;POI免费。供大家参考,针对具体情况选择具体方案。1. PageOffice读取excelimport com.zhuozhengsoft.pageoffice.*;...
  • 1、POI读取Excel时判断单元格数据类型: CELL_TYPE_NUMERIC 数值型 0 CELL_TYPE_STRING 字符串型 1 CELL_TYPE_FORMULA 公式型 2 CELL_TYPE_BLANK 空值 3 CELL_TYPE_BOOLEAN 布尔型 4 CELL_TYPE_ERROR 错误 5 2、在...
  • VBA 单元格基本操作 - 值的判断

    千次阅读 2020-08-05 23:21:43
    继续讲讲单元格的操作 一、提示用户输入值 Sub SetValue() Sheets("sheet3").Range("a1") = InputBox("输入一个数字") End Sub 运行后就会弹出个警告框,提示用户输入内容,输入后就会在A1单元格显示了,但是也...
  • maven版本 <dependency> <groupId>org.apache.poi... 代码 //先判断单元格是否 有内容 再来设置 单元格 类型 if (row.getCell(0) != null) { row.getCell(0).setCellType(Cell.CELL_TYPE_STRING); } Excel单元格类型
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼先谢谢各位我...我自己理解是,cell相当于单元格类型,item属于类型下的内容。不知道理解的对不。如果不对,请大神详细说下这两个到底有啥区别========================...
  • 现有Excel文件emp.xlsx,部分数据如下: EID NAME SURNAME GENDER STATE BIRTHDAY HIREDATE DEPT SALARY 1 Rebecca Moore F California 1974-11-20 2005-03-11 R&...
  • excel如何读取B列的数据类型和b列里的数据=sum(b:b,"工具",a:a)EXCEL如何将表格的数据类型分类提取出来(提取筛选的数据类型)把C列的数据复制,到右边找一列空的列,粘贴进去。然后选中右边粘贴过来的这列、点顶部的...
  • 单元格中的日期类型数据读出为浮点型数据,如将2018/6/13读成46713.0;将单元格中的布尔类型数据读出成浮点型数据,如将1读成1.0。正确地读取数据是进行数据分析的基础,所以提供了一种解决此类问题的思路。在介绍...
  • 另外,由于在读取的过程中,我们是按照顺序for循环往下读的,所以我们不知道某一单元格是否属于Merge Cells,所以在函数里面会进行判断,如果不是Merge Cell则直接返回单元格的值,否则返回Merge Value.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,433
精华内容 11,773
热门标签
关键字:

判断单元格的数据类型