1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > POI操作行列 合并单元格 解决单元格边框缺少问题

POI操作行列 合并单元格 解决单元格边框缺少问题

时间:2024-07-31 19:16:23

相关推荐

POI操作行列 合并单元格 解决单元格边框缺少问题

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:是否把原来的行高设置为默认的//构造方法1public void shiftRows(int startRow, int endRow, int n) {shiftRows(startRow, endRow, n, false, false);}//构造方法2public 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 为样式接口 一般传参可以传XSSFCellStylepublic void setCellStyle(CellStyle style) {}在此不得不介绍另一种方法 ---获取单元格的样式 XSSFCellStylepublic 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模板的码友们有帮助~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。