添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
心软的鼠标  ·  ubuntu ...·  4 月前    · 
个性的木耳  ·  python template ...·  1 年前    · 
绅士的电脑桌  ·  java - "Refused to ...·  1 年前    · 

电子表格一行中单元格的高级表现形式。有三个实现类分别是 HSSFCELL , XSSFCELL SXSSFCELL

除了公式外,单元格值内容是强类型的。如,一个string类型的单元格你不能放入数字,反之亦然。

【1】单元格的获取

单元格下标索引从 0 开始。

① 获取行中第一个有效的单元格

为空则返回 -1;

short firstCellNum = row.getFirstCellNum();

② 获取行中最后一个有效的单元格

short lastCellNum = row.getLastCellNum();

③ 获取行中有效的单元格的数量

int physicalNumberOfCells = row.getPhysicalNumberOfCells();
 

gets the number of defined cells (NOT number of cells in the actual row!).
That is to say if only columns 0,4,5 have values then there would be 3 not 6.

④ 获取单元格类型 V3.15

该种方式在3.15版本后过时。

int cellType = cell.getCellType();

cellType 编码与值对应如下:

    _NONE(-1):未知类型,
    NUMERIC(0):数字类型,包括整数,小数和日期,
    STRING(1):字符串类型,
    FORMULA(2):公式类型,
    BLANK(3):空白类型,
    BOOLEAN(4):布尔类型,
    ERROR(5):错误类型;

⑤ 获取单元格类型

获取cellTypeEnum,根据属性获取不同类型的单元格值:

CellType cellTypeEnum = cell.getCellTypeEnum();
switch (cellTypeEnum) {
	case _NONE:
		System.out.println("this cell type is undefined..");
		break;
	case NUMERIC:
		double numericCellValue = cell.getNumericCellValue();
//			Date dateCellValue = cell.getDateCellValue();
		break;
	case STRING:
		String stringCellValue = cell.getStringCellValue();
//			HSSFRichTextString richStringCellValue = cell.getRichStringCellValue();
		break;
	case FORMULA:
		break;
	case BLANK:
		System.out.println("this cell is empty..");
		break;
	case BOOLEAN:
		boolean booleanCellValue = cell.getBooleanCellValue();
		break;
	case ERROR:
		byte errorCellValue = cell.getErrorCellValue();
		break;
	default:
		break;

其中,日期RichTextString获取方法说明如下:

  • cell.getDateCellValue()注释:获取单元格的值作为一个date,如果是string抛出异常,如果是空的返回null,可以参考HSSFDataFormatter 了解Excel如何格式化date为string。

  • cell.getRichStringCellValue()注释:获取cell的值,格式为string,如果是numeric 抛出异常,如果是空则返回空字符串。

获取单元格的值并以String格式返回,参考实例如下:

* 获取单元格的数据,暂时不支持公式 public static String getCellValue(Cell cell) { if (cell == null) { return null; CellType cellType = cell.getCellTypeEnum(); String cellValue = ""; if (cell == null || cell.toString().trim().equals("")) { return null; } else if (cellType == CellType.STRING) { cellValue = cell.getStringCellValue().trim(); return cellValue = StringUtils.isEmpty(cellValue) ? "" : cellValue; } else if (cellType == CellType.NUMERIC) { cellValue = new DecimalFormat("#.######").format(cell.getNumericCellValue()); return cellValue; } else if (cellType == CellType.BOOLEAN) { cellValue = String.valueOf(cell.getBooleanCellValue()); return cellValue; } else { return null;

获取单元格的批注内容

HSSFCell cell = row.getCell(1);
HSSFComment cellComment = cell.getCellComment();
HSSFRichTextString string = cellComment.getString();

为单元格设置值

如下图所示,根据不同类型为单元格设置相应值:

【2】单元格的移动

① 移动单元格到一个新列中

目标单元格一定不存在,否则报异常。

row.moveCell(cell,newColumn;

示例如下:

row.moveCell(cell,(short) 5);

第六列已经存在单元格,故抛异常。改为移动到第11列:

row.moveCell(cell,(short)10);

此时原单元格为null!对其操作将报空指针。

② 移除单元格

移除后,原单元格将为null。如,移除行中第二个单元格:

HSSFCell cell = row.getCell(1);
row.removeCell(cell);
1. 概述
Microsoft Excel的单元格可以有不同的类型,如字符串、数值、布尔值和公式
在本文中,我们将展示如何使用Apache POI读取作为字符串的单元格值——无论单元格类型是什么
2. Apache POI 依赖项
首先,我们需要添加poi依赖到我们的项目pom.xml文件:
<dependency>
    <groupId>org.apache.poi</groupId>
				
POI getCell(0).getStringCellValue() 空指针异常 Row row = sheet.getRow(row); // 空指针 null String questions = row.getCell(0).getStringCellValue(); 修改成这个,null会被替换成""空字符串 String questions = row.getCell(0, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellVal
[code="java"] public final static String DATE_OUTPUT_PATTERNS = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; public String getCellValue(Cell cell) { String ret; switch (cell.getCellType()) { case Cell...
1. 单元格类型单元格的内容决定了单元格的类型,POI中定义的7种单元格类型: 日期数据对应的单元格类型是CellType.NUMERIC,默认以浮点型数显示,显示为日期格式需要设置单元格样式DataFormat 字符型单元格内容也可以为富文本RichTextString,可以对文本多部分设置字体Font 2. 错误单元格Excel中存在错误单元格,在POI中是怎么表现的呢org.apache
解决办法,在得到cell之后先判断cell是否为空,然后再进行逻辑处理。 得到的cell建议使用去除策略(如左对齐,居中等)cell,不然有可能受到策略影响而导致结果异常。 org.apache.poi.ss.usermodel.Row.MissingCellPolicy policy = org.apache.poi.ss.usermodel.Row.RETURN_NULL_...
getArrayFormulaRange() 获取数组公式的CellRangeAddress值 可以用getFirstColumn()、getFirstRow()、getLastColumn()、getLastRow()获取到边界 这边数组公式指的是excel{公式}(同时按下ctrl+shift+enter键的公式单元格)这种类型的单元格 getBooleanCellValue() 获取boolean类型的单元格值(TRUE、FALSE) getCac
一、POI概述 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。 HWPF - 提供读写Microsoft Wo...
目的由于工作中对读取出来的cellValue统一以字符串类型存储,故有此方法。方案懒得打字,看图如下: 代码主方法(根据不同类型采取不同策略)/** * 根据不同情况获取Java类型值 * <ul><li>空白类型<ul><li>返回空字符串</li></ul></li></ul><ul><li>布尔类型</li><ul><li>返回Boulean类型值</li></ul></
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。 本文将通过实例来介绍apache poi 读取excel的原理,包括各种数据类型的处理,本文提供的代码非常通用,即使不规则的excel文件,也可以读取。 直接看代码吧 //设置同一个单元格多个字体样式 HSSFRichTextString textString = new HSSFRichTextString(fileHead); textString.applyFont(0,fileHead.indexOf("("), font); textString.applyFont(fileHead.indexOf("("),fileHead.length(), font3); cell.