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~C1
		sheet.addMergedRegion(CellRangeAddress.valueOf("$B$1:$C$1"));

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值