请问poi cell.getcelltype=0是数字,poi cell.getcelltype=1是string,poi cell.getcelltype=2是时间吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问poi cell.getcelltype=0是数字,poi cell.getcelltype=1是string,poi cell.getcelltype=2是时间吗?相关的知识,希望对你有一定的参考价值。
如果是时间的话,那格式有什么要求,1/2/2013这种应该是返回是几,还有11.64%返回是几
日期可以直接按字符串处理,如果这个日期需要和其它cell进行互动,那就要使用公式型。
11.64%也是字符串。
Excel虽然提供了大量的用户界面特性,但它仍然保留了第一款电子制表软件VisiCalc的特性:行、列组成单元格,数据、与数据相关的公式或者对其他单元格的绝对引用保存在单元格中。
代码:
Workbook excelWB = null;
excelWB = new XSSFWorkbook(excelFile);
oneSheet = excelWB.getSheetAt(0);
oneRow = oneSheet.getRow(rowNum);
if (oneRow == null)
continue;
// 获取第几列对象
oneCell = oneRow.getCell(1);
if (oneCell == null)
continue;
switch (oneCell.getCellType())
case HSSFCell.CELL_TYPE_STRING:
System.out.println(oneCell.getStringCellValue());
case HSSFCell.CELL_TYPE_ERROR:
break;
扩展资料:
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
参考资料来源:百度百科-字符串
参考技术A CellType 类型 值CELL_TYPE_NUMERIC 数值型 0
CELL_TYPE_STRING 字符串型 1
CELL_TYPE_FORMULA 公式型 2
CELL_TYPE_BLANK 空值 3
CELL_TYPE_BOOLEAN 布尔型 4
CELL_TYPE_ERROR 错误 5追问
那时间什么的,1/2/2013是不是属于公式型啊 ,还请问一下,还有11.64%返回是几
追答日期可以直接按字符串处理,如果这个日期需要和其它cell进行互动,那就要使用公式型。
11.64%也是字符串
poi解析excel
一.遇见的问题:
当单元格设置为日期类型时,cell.getCellStyle().getDataFormat()返回的值都为176。
poi jar包3.14以上不支持用cell.getCellType()判断类型的方法。
使用poi解析技术需要导入poi以及poi-ooxml两个jar包。
二.单元格的类型cell.getCellType():
HSSFCell.CELL_TYPE_NUMERIC:数字类型(包含日期)
CELL_TYPE_STRING:字符串
CELL_TYPE_BOOLEAN:布尔类型
CELL_TYPE_BLANK:没有值
CELL_TYPE_FORMULA:公式取值
三.单元格为自定义类型的时候,cell.getCellStyle().getDataFormat()值:
yyyy-MM-dd---->14
yyyy年m月d日--->31
yyyy年m月------>57
m月d日 -------->58
HH:mm--------->20
h时mm分 ------>32
四.最终代码:
package cn.trashman.excel; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class PoiExcel { public static void main(String[] args) { poiExcel("D:/1.xlsx"); } @SuppressWarnings("resource") public static void poiExcel(String fileName){ boolean is2007 = true; //判断是否是excel2007格式 if(fileName.endsWith("xlsx")) is2007 = false; try { InputStream input = new FileInputStream(fileName); //建立输入流 Workbook wb = null; //根据文件格式(2003或者2007)来初始化 if(is2007) wb = new HSSFWorkbook(input); else wb = new XSSFWorkbook(input); Sheet sheet = wb.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); for (int i = 0; i <= lastRowNum; i++) { //具体到某一行 Row row = sheet.getRow(i); //单元格的数量 int lastCellNum = row.getLastCellNum(); for (int j = 0; j < lastCellNum; j++) { Cell cell = row.getCell(j); //根据cell中的类型来输出数据 switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: Object result = cell.getNumericCellValue(); // // 判断单元格是否属于日期格式 // if(HSSFDateUtil.isCellDateFormatted(cell)){ // //java.util.Date类型 // result = cell.getDateCellValue(); // } short format = cell.getCellStyle().getDataFormat(); SimpleDateFormat sdf = null; if(format != 0){ // format == 176时是当指定单元格格式为日期是都是176 if(format == 14 || format == 31 || format == 57 || format == 58||format == 176){ //日期 sdf = new SimpleDateFormat("yyyy-MM-dd"); }else if (format == 20 || format == 32) { //时间 sdf = new SimpleDateFormat("HH:mm"); } double value = cell.getNumericCellValue(); Date date = DateUtil.getJavaDate(value); result = sdf.format(date); } System.out.println(result); break; case HSSFCell.CELL_TYPE_STRING: System.out.println(cell.getStringCellValue()); break; case HSSFCell.CELL_TYPE_BOOLEAN: System.out.println(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: System.out.println(cell.getCellFormula()); break; case HSSFCell.CELL_TYPE_BLANK: System.out.println("为空"); break; default: System.out.println("unsuported sell type"); break; } } System.out.println(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
以上是关于请问poi cell.getcelltype=0是数字,poi cell.getcelltype=1是string,poi cell.getcelltype=2是时间吗?的主要内容,如果未能解决你的问题,请参考以下文章