Java POI单元格使用心得
1:
/**
* Created by liuguangxin on 2018/5/16.
* <p>
* MergeRegion:表示excel中cell的信息,startRow与endRow表示当前cell的起始与结束行编号(base 1),
* startCol与endCol同理表示列的起始与结束列编号(base 1)<p/>
*/
public class MergeRegion { @Override
public String toString() {
return "[ " +
"merged=" + merged +
", startRow=" + startRow +
", endRow=" + endRow +
", startCol=" + startCol +
", endCol=" + endCol +
"] ";
} @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; MergeRegion result = (MergeRegion) o; if (merged != result.merged) return false;
if (startRow != result.startRow) return false;
if (endRow != result.endRow) return false;
if (startCol != result.startCol) return false;
return endCol == result.endCol;
} @Override
public int hashCode() {
int result = (merged ? 1 : 0);
result = 31 * result + startRow;
result = 31 * result + endRow;
result = 31 * result + startCol;
result = 31 * result + endCol;
return result;
} public boolean merged;
public int startRow;
public int endRow;
public int startCol;
public int endCol; public MergeRegion(boolean merged, int startRow, int endRow
, int startCol, int endCol) {
this.merged = merged;
this.startRow = startRow;
this.endRow = endRow;
this.startCol = startCol;
this.endCol = endCol;
}
}
获取单元格的之,包含是否是合并的情况:
/**
* @param sheet
* @param rowIndex
* @param columnIndex
* @return 返回指定cell对应的值,否则返回null
*/
public static String getCellValue(Sheet sheet, int rowIndex, int columnIndex) { MergeRegion region = isMergedRegion(sheet, rowIndex, columnIndex);
if (region.merged) {
// |——————————————————————
// | | | |
// |——————————————————————
// | | | |
// |——————————————————————
// | | | |
// |——————————————————————
// 对于如上3*3的表格合并之后,只有获取相对3*3表格内 (0,0)的位置才会获取到数据,
// 因此对于如果获取的是合并cell的值的话需要转换rowIndex,columnIndex为相对表格内的(0,0)处
rowIndex = region.startRow - 1;
columnIndex = region.startCol - 1;
}
Row row = sheet.getRow(rowIndex);
Cell cell;
if (Objects.nonNull(row) && (cell = row.getCell(columnIndex)) != null) {
cell.setCellType(CellType.STRING);
return deleteEnterChar(cell.getStringCellValue());
} return null;
}
Java POI单元格使用心得的更多相关文章
- POI单元格添加公式以及读取公式结果的值
POI提供了为单元格添加条件样式的方法,但是我并没有找到获取单元格改变后样式的方法,获取到样式依旧是没有改变之前的. 比如为单元格添加条件样式用于监听单元格值是否被修改,如果单元格值被修改那么字体颜色 ...
- POI 单元格
OI 单元格合并中的CellRangeAddress 参数: CellRangeAddress(int, int, int, int) 参数:起始行号,终止行号, 起始列号,终止列号 sheet.ad ...
- java合并单元格同时导出excel
POI进行跨行需要用到对象HSSFSheet对象,现在就当我们程序已经定义了一个HSSFSheet对象sheet. 跨第1行第1个到第2个单元格的操作为 sheet.addMergedRegion(n ...
- 1.0 poi单元格合合并及写入
最近项目中用到poi生成Excel时,用到了单元格合并,于是参考了http://www.anyrt.com/blog/list/poiexcel.html写的文章,但是其中有些地方不是很清楚,于是自己 ...
- POI 单元格类型CellType
1.单元格类型 单元格的内容决定了单元格的类型,POI中定义的7种单元格类型: 2.示例 cell_0.setCellType(CellType.STRING);//字符串 日期数据对应的单元格类型是 ...
- 【转】NPOI 单元格级别应用
NPOI 单元格级别应用A HSSFWorkbook hssfworkbook = new HSSFWorkbook();//初始化一个新的HSSFWorkbook实例 //#region 1.创建一 ...
- 【POI xls Java map】使用POI处理xls 抽取出异常信息 --java1.8Group by ---map迭代 -- 设置单元格高度
代码处理逻辑: 代码流程: 1.首先需要创建一个实体 用来存储 相关信息 package com.sxd.test.unusualName; public class NameEntity { pri ...
- java poi操作excel 添加 锁定单元格保护
Excel的book保护是很常用的,主要是不想让别人修改Excel的时候用.这样能够避免恶意随便修改数据,提高数据的可信度. 下面介绍JAVA POI来实现设置book保护: 使用HSSFSheet类 ...
- POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解
http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...
随机推荐
- java中那些类是线程安全的?
Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...
- Tomcat Connector原理
Tomcat工作原理 要了解其中的工作原理我们首先看如下两个图 Tomcat基本架构图: Tomcat请求示意图: 客户端的请求通过Connector接受处理后在到容器Engine->Host- ...
- Bell(矩阵快速幂+中国剩余定理)
Bell Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- linux7 安装GitLab
1.安装Linux虚拟机-- 安装后配置a.停止防火墙# systemctl stop firewalld.service# systemctl disable firewalld.service# ...
- CentOS 7环境下Pycharm安装流程记录
1.准备安装文件: 方法1: 使用内置火狐浏览器访问下载最新格式为tar.gz的压缩包 网址:https://www.jetbrains.com/pycharm/download/previous.h ...
- 设计模式原则(5)--Law of Demeter(LoD)--迪米特法则
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.定义: 一个软件实体应当尽可能少地与其他实体发生相互作用.也就是说:一个类对自己依赖的类知道的越少越好.也就是 ...
- mongodb与mysql区别(超详细)
MySQL是关系型数据库. 优势: 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,mysql的份额页在持续增长. 缺 ...
- Hadoop大数据初入门----haddop伪分布式安装
一.hadoop解决了什么问题 hdfs 解决了海量数据的分布式存储,高可靠,易扩展,高吞吐量mapreduce 解决了海量数据的分析处理,通用性强,易开发,健壮性 yarn 解决了资源管理调度 二. ...
- SVN CentOS7 下配置svn的安装及基础配置介绍
CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一. 实践环境 CentOS 7操作系统(CentO ...
- Android 使用RecyclerView SnapHelper详解
简介 RecyclerView在24.2.0版本中新增了SnapHelper这个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置.特别是列表横向滑动时,很多时候不会让列表滑 ...