POI读取Excel 各种特殊数字和类型的转换。取值带一个E

POI 读取单元格内容2种方式(数值、文本、日期、布尔、公式类型) 1formatCellValue() formatter.formatCellValue()可以直接获取单元格内容。 public static String getCellValue(Cell cell){ DataFormatter formatter = new DataFormatter(); return formatter.formatCellValue(cell); } 2 根据单元格类型获取内容 public static String getCellVal... 阅读详情

1, 对于类似电话号码或手机一类的大数值读取问题 

// 取值后会带一个E的问题 
double cellValue = row.getCell(k).getNumericCellValue(); 
fieldValues[k] = new DecimalFormat("#").format(cellValue); 

2, 对于数值型单元的纯数值和日期型的处理 

case HSSFCell.CELL_TYPE_NUMERIC: // 数值型   
    if (HSSFDateUtil.isCellDateFormatted(cell)) {   
        //  如果是date类型则 ,获取该cell的date值   
        value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString();   
    } else { // 纯数字   
        value = String.valueOf(cell.getNumericCellValue());   
}

转: POI读取Excel浅谈 
先看代码,挨句解释: 
一般遍历使用两种方式,1:得到总的行数和每行的列数,然后循环。2:使用迭代 
先看第一种: 

Java代码  
package com.golden.test;   
  
import java.io.File;   
import java.io.FileInputStream;   
  
import org.apache.poi.hssf.usermodel.HSSFCell;   
import org.apache.poi.hssf.usermodel.HSSFRow;   
import org.apache.poi.hssf.usermodel.HSSFSheet;   
import org.apache.poi.hssf.usermodel.HSSFWorkbook;   
  
/**  
*   
* @author 崔素强  
*   
*/  
public class PoiReadXls2 {   
    public static void main(String[] args) {   
        File f = new File("c:\\a.xls");   
        try {   
            FileInputStream is = new FileInputStream(f);   
            HSSFWorkbook wbs = new HSSFWorkbook(is);   
            HSSFSheet childSheet = wbs.getSheetAt(0);   
            // System.out.println(childSheet.getPhysicalNumberOfRows());   
            System.out.println("有行数" + childSheet.getLastRowNum());   
            for (int j = 0; j < childSheet.getLastRowNum(); j++) {   
                HSSFRow row = childSheet.getRow(j);   
                // System.out.println(row.getPhysicalNumberOfCells());   
                // System.out.println("有列数" + row.getLastCellNum());   
                if (null != row) {   
                    for (int k = 0; k < row.getLastCellNum(); k++) {   

                        HSSFCell cell = row.getCell(k);   
                        if (null != cell) {   
                            switch (cell.getCellType()) {   
                            case HSSFCell.CELL_TYPE_NUMERIC: // 数字   
                                System.out.print(cell.getNumericCellValue()   
                                        + "   ");   
                                break;   
                            case HSSFCell.CELL_TYPE_STRING: // 字符串   
                                System.out.print(cell.getStringCellValue()   
                                        + "   ");   
                                break;   
                            case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean   
                                System.out.println(cell.getBooleanCellValue()   
                                        + "   ");   
                                break;   
                            case HSSFCell.CELL_TYPE_FORMULA: // 公式   
                                System.out.print(cell.getCellFormula() + "   ");   
                                break;   
                            case HSSFCell.CELL_TYPE_BLANK: // 空值   
                                System.out.println(" ");   
                                break;   
                            case HSSFCell.CELL_TYPE_ERROR: // 故障   
                                System.out.println(" ");   
                                break;   
                            default:   
                                System.out.print("未知类型   ");   
                                break;   
                            }   
                        } else {   
                            System.out.print("-   ");   
                        }   
                    }   
                }   
                System.out.println();   
            }   
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }   
}  

package com.golden.test; 

import java.io.File; 
import java.io.FileInputStream; 

import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 

/** 
* 
* @author 崔素强 
* 
*/ 
public class PoiReadXls2 { 
        public static void main(String[] args) { 
                File f = new File("c:\\a.xls"); 
                try { 
                        FileInputStream is = new FileInputStream(f); 
                        HSSFWorkbook wbs = new HSSFWorkbook(is); 
                        HSSFSheet childSheet = wbs.getSheetAt(0); 
                        // System.out.println(childSheet.getPhysicalNumberOfRows()); 
                        System.out.println("有行数" + childSheet.getLastRowNum()); 
                        for (int j = 0; j < childSheet.getLastRowNum(); j++) { 
                                HSSFRow row = childSheet.getRow(j); 
                                // System.out.println(row.getPhysicalNumberOfCells()); 
                                // System.out.println("有列数" + row.getLastCellNum()); 
                                if (null != row) { 
                                        for (int k = 0; k < row.getLastCellNum(); k++) { 
                                                HSSFCell cell = row.getCell(k); 
                                                if (null != cell) { 
                                                        switch (cell.getCellType()) { 
                                                        case HSSFCell.CELL_TYPE_NUMERIC: // 数字 
                                                                System.out.print(cell.getNumericCellValue() 
                                                                                + "   "); 
                                                                break; 
                                                        case HSSFCell.CELL_TYPE_STRING: // 字符串 
                                                                System.out.print(cell.getStringCellValue() 
                                                                                + "   "); 
                                                                break; 
                                                        case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean 
                                                                System.out.println(cell.getBooleanCellValue() 
                                                                                + "   "); 
                                                                break; 
                                                        case HSSFCell.CELL_TYPE_FORMULA: // 公式 
                                                                System.out.print(cell.getCellFormula() + "   "); 
                                                                break; 
                                                        case HSSFCell.CELL_TYPE_BLANK: // 空值 
                                                                System.out.println(" "); 
                                                                break; 
                                                        case HSSFCell.CELL_TYPE_ERROR: // 故障 
                                                                System.out.println(" "); 
                                                                break; 
                                                        default: 
                                                                System.out.print("未知类型   "); 
                                                                break; 
                                                        } 
                                                } else { 
                                                        System.out.print("-   "); 
                                                } 
                                        } 
                                } 
                                System.out.println(); 
                        } 
                } catch (Exception e) { 
                        e.printStackTrace(); 
                } 
        } 
}
得到Excel的文件然后读取,这个很简单。关键有两个地方,也许在网上会看到有的这样使用有的那样使用。 
System.out.println("有行数" + childSheet.getLastRowNum()); 
System.out.println(childSheet.getPhysicalNumberOfRows()); 
System.out.println("有列数" + row.getLastCellNum()); 
System.out.println(row.getPhysicalNumberOfCells()); 
如果人都拷贝代码进行使用了,不知道有什么区别。太多的区别不知道,但是有一点我发现了,那就是如果中间各行或者隔列的话getPhysicalNumberOfRows和getPhysicalNumberOfCells就不能读取到所有的行和列了。 
再者,一定要对单元格的格式进行判断switch (cell.getCellType()),不同的单元格格式使用不同的方法。最后加上为止类型,以防万一。 
而且在数字类型里,又分为了纯数字和时间格式: 

case HSSFCell.CELL_TYPE_NUMERIC: // 数值型   
    if (HSSFDateUtil.isCellDateFormatted(cell)) {   
        //  如果是date类型则 ,获取该cell的date值   
        value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString();   
    } else { // 纯数字   
        value = String.valueOf(cell.getNumericCellValue());   
}  

case HSSFCell.CELL_TYPE_NUMERIC: // 数值型 
        if (HSSFDateUtil.isCellDateFormatted(cell)) { 
                //  如果是date类型则 ,获取该cell的date值 
                value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString(); 
        } else { // 纯数字 
                value = String.valueOf(cell.getNumericCellValue()); 
}

还有一种迭代的方法: 

package com.golden.test;   
  
import java.io.File;   
import java.io.FileInputStream;   
import java.io.IOException;   
import java.io.InputStream;   
import java.util.Iterator;   
import org.apache.poi.hssf.usermodel.HSSFCell;   
import org.apache.poi.hssf.usermodel.HSSFRow;   
import org.apache.poi.hssf.usermodel.HSSFSheet;   
import org.apache.poi.hssf.usermodel.HSSFWorkbook;   
import org.apache.poi.poifs.filesystem.POIFSFileSystem;   
  
/**  
*   
* @author 崔素强  
*   
*/  
public class PoiReadXls {   
    @SuppressWarnings( { "unchecked", "deprecation" })   
    public static void main(String[] args) {   
        File f = new File("c:\\a.xls");   
        try {   
            InputStream input = new FileInputStream(f);   
            POIFSFileSystem fs = new POIFSFileSystem(input);   
            HSSFWorkbook wb = new HSSFWorkbook(fs);   
            HSSFSheet sheet = wb.getSheetAt(0);   
            Iterator rows = sheet.rowIterator();   
            while (rows.hasNext()) {   
                HSSFRow row = (HSSFRow) rows.next();   
                // System.out.print("行:" + row.getRowNum() + " ");   
                Iterator cells = row.cellIterator();   
                while (cells.hasNext()) {   
                    HSSFCell cell = (HSSFCell) cells.next();   
                    // System.out.println("列:" + cell.getCellNum());   
                    switch (cell.getCellType()) {   
                    case HSSFCell.CELL_TYPE_NUMERIC: // 数字   
                        System.out.print(cell.getNumericCellValue() + "   ");   
                        break;   
                    case HSSFCell.CELL_TYPE_STRING: // 字符串   
                        System.out.print(cell.getStringCellValue() + "   ");   
                        break;   
                    case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean   
                        System.out.println(cell.getBooleanCellValue() + "   ");   
                        break;   
                    case HSSFCell.CELL_TYPE_FORMULA: // 公式   
                        System.out.print(cell.getCellFormula() + "   ");   
                        break;   
                    case HSSFCell.CELL_TYPE_BLANK: // 空值   
                        System.out.println(" ");   
                        break;   
                    case HSSFCell.CELL_TYPE_ERROR: // 故障   
                        System.out.println(" ");   
                        break;   
                    default:   
                        System.out.print("未知类型   ");   
                        break;   
                    }   
                }   
                System.out.println();   
            }   
        } catch (IOException ex) {   
            ex.printStackTrace();   
        }   
    }   
}  

package com.golden.test; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.Iterator; 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.poifs.filesystem.POIFSFileSystem; 

/** 
* 
* @author 崔素强 
* 
*/ 
public class PoiReadXls { 
        @SuppressWarnings( { "unchecked", "deprecation" }) 
        public static void main(String[] args) { 
                File f = new File("c:\\a.xls"); 
                try { 
                        InputStream input = new FileInputStream(f); 
                        POIFSFileSystem fs = new POIFSFileSystem(input); 
                        HSSFWorkbook wb = new HSSFWorkbook(fs); 
                        HSSFSheet sheet = wb.getSheetAt(0); 
                        Iterator rows = sheet.rowIterator(); 
                        while (rows.hasNext()) { 
                                HSSFRow row = (HSSFRow) rows.next(); 
                                // System.out.print("行:" + row.getRowNum() + " "); 
                                Iterator cells = row.cellIterator(); 
                                while (cells.hasNext()) { 
                                        HSSFCell cell = (HSSFCell) cells.next(); 
                                        // System.out.println("列:" + cell.getCellNum()); 
                                        switch (cell.getCellType()) { 
                                        case HSSFCell.CELL_TYPE_NUMERIC: // 数字 
                                                System.out.print(cell.getNumericCellValue() + "   "); 
                                                break; 
                                        case HSSFCell.CELL_TYPE_STRING: // 字符串 
                                                System.out.print(cell.getStringCellValue() + "   "); 
                                                break; 
                                        case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean 
                                                System.out.println(cell.getBooleanCellValue() + "   "); 
                                                break; 
                                        case HSSFCell.CELL_TYPE_FORMULA: // 公式 
                                                System.out.print(cell.getCellFormula() + "   "); 
                                                break; 
                                        case HSSFCell.CELL_TYPE_BLANK: // 空值 
                                                System.out.println(" "); 
                                                break; 
                                        case HSSFCell.CELL_TYPE_ERROR: // 故障 
                                                System.out.println(" "); 
                                                break; 
                                        default: 
                                                System.out.print("未知类型   "); 
                                                break; 
                                        } 
                                } 
                                System.out.println(); 
                        } 
                } catch (IOException ex) { 
                        ex.printStackTrace(); 
                } 
        } 
}

这种方法,如果数据的紧凑的,使用还是方便的,但是我发现,如果是空行或者是空列,他就会隔过去。具体的自己试试就知道了。 
另外,也能看到这里得到Excel文件的方式是通过File,如果要引用到Struts2里,这是很简单的,因为Struts2上传时Action里定义的就是File或者File数组。 

原文章地址:http://jammy-zhou.iteye.com/blog/850240


poi 读取excel 的问题 日期和数值会有问题的解决方案 当excel 中的数据为数值或日期是需要特殊处理如下面红色字体部分 switch(cell.getCellType()){         case  HSSFCell.CELL_TYPE_NUMERIC:          if (HSSFDateUtil.isCellD 阅读详情

相关推荐

行人重识别(ReID)基础知识入门

行人重识别(Person re-identification)主要目的是针对出现在监控摄像头内的某个目标行人,准确快速地从监控网络其他摄像头内的大量行人中将这个目标行人标识出来。如图所示一个区域有多个摄像头拍摄视频序列,ReID的要求对一个摄像头下感兴趣的行人,检索到该行人在其他摄像头下出现的所有图片。

用于记录 1万+

poi解析excel

一.遇见的问题:   当单元格设置为日期类型时,cell.getCellStyle().getDataFormat()返回的值都为176。   poi jar包3.14以上不支持用cell.getCellType()判断类型的方法。   使用poi解析技术需要导入poi以及poi-ooxml两个jar包。 二.单元格的类型cell.getCellType():   HSSFCell.CE...

menghuannvxia的专栏 3792

【生物识别模组介绍】静脉识别模组

静脉识别技术是依据流动的静脉血液中的血红蛋白对近红外光有所吸收,通过近红外光照射手指、手掌、面部、腕部呈现的分布图像,再使用特定的算法对图像进行特征提取、分析比对,从而进行身份认证识别。静脉结构相同几率为34亿分之一,每个人的静脉结构具有独特性,而且静脉特征图像自成年后终身不变,不受外部环境、疾病等影响,是人体最稳定的生物特征之一。商务合作联系:newmagicmission@gmail.com图1.0。

upupDay's blog 899

转:POI读取Excel浅谈

1, 对于类似电话号码或手机一类的大数值读取问题 // 取值后会带一个E的问题 double cellValue = row.getCell(k).getNumericCellValue(); fieldValues[k] = new DecimalFormat("#").format(cellValue); 2, 对于数值型单元的纯数值和日期型的处理 case HSSFCel...

iteye_11785的博客 358

从频谱分析到硬件加速:用ZYNQ-7020+FFT IP核实现实时信号处理的完整方案

本文详细介绍了如何利用ZYNQ-7020和FFT IP核实现实时信号处理的完整方案,涵盖系统架构设计、硬件加速实现及性能优化。通过异构计算架构,该方案将1024点FFT处理延迟压缩至28μs,显著提升工业自动化和无线通信等领域的实时频谱分析效率。

weixin_33704234的博客 467

点云入门笔记(一):点云数据及获取

点云概念: 点云是某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标 X,Y,Z、颜色、分类值、强度值、时间等等。

wc19862274581的博客 2万+

Java操作Excel中HSSFCell.CELL_TYPE_STRING、BOOLEAN、NUMERIC无定义解决方法

错误原因:jar包版本更新,官方改动; 解决方法: 导入CellType包import org.apache.poi.ss.usermodel.CellType使用CellType.STRING代替HSSFCell.CELL_TYPE_STRING其他同理。 新版: if(cell==null||cell.equals(null)||cell.getCellType()==CellTy...

weixin_30675967的博客 1278

FI 应计对象的创建和摊销

创建/修改:ACACTREE01/ACACTREE02 应计对象的过账:ACACPOSTING

nancyln9711的博客 902

POI 操作 Excel 中 HSSFCell.CELL_TYPE_STRING 等无定义解决方法

一、错误原因:jar包版本更新,官方改动; 二、解决方案:导入CellType包import org.apache.poi.ss.usermodel.CellType;使用CellType.STRING代替HSSFCell.CELL_TYPE_STRING 三、旧版代码: /** * excel值处理 * @param hssfCell * @return */ public static Object getXSSFValue(XSSFCell hssfCell) {

MR.骑士道 1万+

工业相机图像格式深度解析:从Mono8到Mono12的选型与应用

本文深度解析工业相机黑白图像格式,重点对比Mono8、Mono10与Mono12的核心差异。文章从位深、动态范围和数据量等关键概念切入,详细阐述了不同格式的优缺点及适用场景,为工业视觉项目中的相机选型提供实战指南,帮助用户在精度、速度与成本间做出最优决策。

weixin_29207439的博客 260

微信小程序 - 实现身份证OCR识别人像面与国徽面并提取字段信息,详解从手机相册选取或打开摄像头拍照上传身份证正反面图片ocr文字识别数据填充表单(提供免费纯前端ocr识别插件+百度OCR识别API)

微信小程序身份证识别,微信小程序身份证拍照、上传并OCR识别,微信小程序实现OCR扫描识别,微信小程序识别身份证免费插件,微信小程序实现身份证识别功能。ocr识别插件。微信身份证拍照后进行ocr识别,微信小程序OCR扫描识别身份证,OCR身份证实名认证+图片上传+拍照上传图片,微信小程序之身份证照片正反上传,小程序OCR身份证识别,微信小程序实现文字识别-ocr插件,微信小程序利用百度AI实现扫描身份证获取信息功能,基于微信小程序OCR插件实现身份证拍照、上传并OCR识别的示例demo,将上传的照片传到服务

🏆 前端领域优质创作者 8133

POI读取Excel 各种特殊数字和类型的转换 取值带一个E

POI读取Excel 各种特殊数字和类型的转换 取值带一个E

qq_43679720的博客 1930

神经影像和人类基因组关联分析的实践过程

现代全脑转录图谱为研究脑组织的分子相关性提供了前所未有的机会,可以使用无创神经成像进行量化。然而,将神经影像学数据与转录组测量相结合并不是直截了当的,需要仔细考虑才能做出有效的推断。在本文中,我们回顾了最近的研究工作,探讨了不同的方法选择如何影响成像转录组学分析的三个主要阶段,包括1)转录图谱数据的处理;2)将转录测量与独立衍生的神经影像学表型相关联;3)通过基因富集分析评估鉴定的关联的功能意义。我们的目标是为这个快速发展的领域促进标准化和可复制方法的发展。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2201

java读取excel数字类型_POI读取Excel 各种特殊数字和类型的转换。

Java代码packagecom.golden.test;importjava.io.File;importjava.io.FileInputStream;importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermod...

weixin_33705384的博客 1130

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

POI读取Excel 各种特殊数字和类型的转换

POI读取Excel 各种特殊数字和类型的转换。取值带一个E http://blog.youkuaiyun.com/johnstrive/article/details/8393541 POI解析Excel【poi的坑——空行处理】 https://my.oschina.net/treenewbee/blog/489957 Java的poi技术遍历Excel时进行空Cell,空row,判断

lemon 5736

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java 读取Excel数据(POI)

1、添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.13</version> </dependency> <depend...

kanglong129的博客 2221

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

POI读取Excel 各种特殊数字和类型的转换。

1, 对于类似电话号码或手机一类的大数值读取问题  [java] view plain copy // 取值后会带一个E的问题    double cellValue = row.getCell(k).getNumericCellValue();    new DecimalFormat("#").format(cellValue);

Fupengyao的博客 1万+

poi读取Excel文件并进行数据类型转换

将字段转为相应的格式

呋喃的博客 1185

POI读取Excel 各种特殊数字和类型的转换。

1, 对于类似电话号码或手机一类的大数值读取问题 // 取值后会带一个E的问题 double cellValue = row.getCell(k).getNumericCellValue(); fieldValues[k] = new DecimalFormat("#").format(cellValue); 2, 对于数值型单元的纯数值和日期型的处理 case H...

weixin_30516243的博客 385

Java读取Excel并解析文本(并格式化输出)

java解析excel并批量入库

独学而无友,则孤陋而寡闻 8万+

java poi解析excel_Java 利用POI 解析Excel

引入的依赖org.apache.poipoi3.16org.apache.poipoi-ooxml3.16简单说明主要有四个属性,Workbook(工作表),Sheet(表单),Row(行), Cell(单元格)需要读取的文件读取的Excel文件读取Excel思路是按照Workbook,Sheet,Row,Cell一层一层往下读取。首先是初始化Workbookprivate Workbook ge...

weixin_35662417的博客 745
上一篇: mysql 将null转代为0
下一篇: Null value was assigned to a property of primitive type setter ,hibernate int型数据无法读取 hiberante读int
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值