POI-操作行列单元格

  • 一、POI-操作行
    • 1.1 场景:直接插入行
    • 1.2 场景:先移动旧行 再插入新行
    • 1.3 单元格样式的设置
  • 二、POI-操作列
  • 三、POI-合并单元格

一、POI-操作行

 以下为本人使用 POI操作行 的实例;

1.1 场景:直接插入行

举个栗子(如图)~


 这种情况下,我们希望在表单中新增若干行;
   请食用以下方法:

createRow(int rownum);//在指定索引处新增一行

注意哈:上方举例表头XX医院XX报告单字样所在的单元格可能是由若干行合并后的结果;

 行的索引应该根据excel左侧显示的行号来计算;
 列的索引同理;

@param rownum :添加行所在的索引
@return XSSFRow :当前行对象
public XSSFRow createRow(int rownum) {}

     此时新鲜出炉的行对象已经可以获取到啦!
适用于:表单excel/其他类excel模板中没有尾部信息时的插入操作;
因为 若添加行所在的索引位置已有模板数据,此时会将该行数据进行覆盖

 当然接下来介绍有尾部信息时的插入行操作方法~~~

       单元格样式的设置见1.3;

1.2 场景:先移动旧行 再插入新行

举个栗子:

 这种情况下,我们同样希望在表单中新增若干行,但是此时模板是有尾部的;
思路:先把尾部所在行进行下移;再新增行;
   同样,请食用以下方法:

shiftRows(int startRow, int endRow, int n);//把指定索引的列向endRow方向移动n行(直男译)
createRow(int rownum);//在指定索引处新增一行
@param startRow:被移动行(目标行)的索引
@param endRow:移动方向..索引(将要向移动方向行的索引)
@param n:移动n行
@param copyRowHeight:在移动时,是否复制行高
@param resetOriginalRowHeight:是否把原来的行高设置为默认的
//构造方法1
public void shiftRows(int startRow, int endRow, int n) {shiftRows(startRow, endRow, n, false, false);}
//构造方法2
public void shiftRows(int startRow, int endRow, final int n, boolean copyRowHeight, boolean resetOriginalRowHeight) {}@param rownum :添加行所在的索引
@return XSSFRow :当前行对象
public XSSFRow createRow(int rownum) {}

1.3 单元格样式的设置

设置单元格样式的前提:通过行对象XSSFRow拿到目标单元格对象XSSFCell
方法:

获取指定索引的单元格(通过行对象定位列索引 拿到列对象)
public XSSFCell getCell(int cellnum) {return getCell(cellnum, _sheet.getWorkbook().getMissingCellPolicy());}为指定单元格设置指定的样式      CellStyle 为样式接口   一般传参可以传XSSFCellStyle
public void setCellStyle(CellStyle style) {}在此不得不介绍另一种方法 ---获取单元格的样式 XSSFCellStyle
public XSSFCellStyle getCellStyle() {}
//设置单元格样式XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream("路径"));XSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setBorderBottom(BorderStyle.THIN);//下边框样式cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());//下边框颜色cellStyle.setBorderLeft(BorderStyle.THIN);//左边框cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());cellStyle.setBorderTop(BorderStyle.THIN);//上边框cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());cellStyle.setBorderRight(BorderStyle.THIN);//右边框cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());cellStyle.setAlignment(HorizontalAlignment.CENTER); // 设置单元格水平方向对其方式为居中cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//设置单元格垂直方向对其方式为居中cellStyle.setWrapText(true);

二、POI-操作列

三、POI-合并单元格

这里介绍的合并单元格方法是XSSFSheet对象中的哦

//合并目标单元格
public int addMergedRegion(CellRangeAddress region) {return addMergedRegion(region, true);
}//通过ref这个字符串获取到被合并的大单元格 ---- 也就是结果单元格
public static CellRangeAddress valueOf(String ref) {//这里略写,看源码的小伙伴可以用idea去瞅瞅return new CellRangeAddress(****);}

举个栗子~

     XSSFSheet sheet = workbook.getSheetAt(0);//合并B1~C1sheet.addMergedRegion(CellRangeAddress.valueOf("$B$1:$C$1"));

标题说解决单元格边框缺少问题;这个是我在coding的时候遇到的,自己解决的思路:
先增加单元格 把数据赋好之前
再最后一步之前 进行合并单元格即可

操作行中包括了一些操作列的内容;后续有时间再整理操作列的方法; 希望对在解析excel模板的码友们有帮助~

POI操作行列、合并单元格、解决单元格边框缺少问题相关推荐

  1. 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?

    有的时候,我们需要通过操作Apache POI,在生成Cell数据的同时,能对其生成的Cell,加上注解(comments),类似于下面的. 那么对于这种情况,我们的代码应该如何写呢? 借花献佛,我就 ...

  2. java合并单元格的快捷键_Java使用POI操作Excel合并单元格

    合并单元格的方法: 指定 4 个参数,起始行,结束行,起始列,结束列.然后这个区域将被合并. CellRangeAddress region = new CellRangeAddress(startR ...

  3. POI操作word合并单元格

    对于合并单元格的介绍不怎么多,下面是之前做word导出的时候研究的,在stackoverflow查到了点资料. 记录下两个关键方法: // word跨列合并单元格public void mergeCe ...

  4. Java实战—POI操作Excel文档、读取、写入、合并单元格

    一.POI项目简介 POI全称 Poor Obfuscation Implementation,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:http: ...

  5. POI导出支持合并表头及单元格锁定的Excel

    1.开发前提 目前项目上有这样的需求,支持Excel导出后再线下调至后导入,并且有关键字及其他部分字段不支持修改,所以需要写保护,按正常的理解来讲锁定特定的列即可,但是需求中需要在Excel中添加行数 ...

  6. poi删除带有合并单元格的行的问题

    在网上搜了很久关于poi删除带有合并单元格的一行后,下面行数据向上移动一行时,出现乱合并的问题,看到有人提过这个问题,但是郁闷的很没有一个人回答过,而且大部分的文章都是关于什么合并单元格,读取Exce ...

  7. POI 操作Excel的单元格样式超过64000的异常问题解决

    文章目录 POI 操作Excel的单元格样式超过64000的异常问题解决 问题描述 问题原因 问题分析和解决 简单的Excel文件生成Demo 最终的解决方案 POI 操作Excel的单元格样式超过6 ...

  8. python实现excel单元格合并_python进行excel单元格合并逆操作

    python进行excel单元格合并逆操作.利用anaconda3中的 pandas对包含合并单元格的表进行预处理,完成取消合并单元格的操作. 目标 通过处理表格A,得到表格B. 图1(通过处理表格A ...

  9. jquery操作表格 合并单元格

    $('#table_2').mergeCell({cols: [7,8,9] ///参数为要合并的列,例如[0,5],表示第0和第5列});/** * 操作表格 合并单元格 行 * 2016年12月1 ...

最新文章

  1. Facebook使用机器学习手段来自动优化其系统性能
  2. Swift:如何优雅地使用 print()(三)
  3. 活动的批输入监控ENV
  4. 产品中心和用户中心的视角摘抄
  5. 机器学习与数学分析(一)
  6. Web高级征程:《大型网站技术架构》读书笔记系列
  7. 云桌面 瘦终端_云桌面选择云终端还是瘦客户机?
  8. Solaris10 JumpStart服务器配置
  9. 制作openstack-centos镜像
  10. python 字典排序 lambda_Python使用lambda表达式对字典排序操作示例
  11. XOS 源码详解3: os_s_xxxx.s 汇编代码的 LDR指令
  12. 【渝粤教育】国家开放大学2018年秋季 0556-22T广告摄影 参考试题
  13. LayaAir 屏幕适配-横屏与竖屏
  14. 密码字典生成工具—Crunch的使用
  15. hive 添加字段,字段值错位问题
  16. HTML巩固练习之字体样式
  17. DBA_实践指南系列9_Oracle Erp R12应用补丁AutoPatch/AutoControl/AutoConfig(案例)
  18. Python 爬虫框架Scrapy Spiders学习
  19. lucas–kanade_Lucas–Kanade
  20. 【Romance of the Three Kingdoms】

热门文章

  1. 个人笔记:数据库——第三章 第三部分 DML 数据操纵语言
  2. linux nmi,NMI 文件扩展名: 它是什么以及如何打开它?
  3. C++【对象模型】| 【06】类中各种函数的刨析
  4. 基于OpenCV的立体相机标定StereoCalibration与目标三维坐标定位
  5. 【活动回顾】BSV区块链协会成功举办澳大利亚区块链应用论坛
  6. 矩阵乘法的性质(注意:一般不满足交换律)
  7. 微信Emoji表情代码大全
  8. 时钟偏移(skew)和时钟抖动(jitter)以及clock uncertainty
  9. 使用matplotlib绘制简单图表第二课
  10. 制作OCX控件简单流程