兰州企业网站,wordpress建立视频网站,普通电脑如何做网站服务器吗,山东临沂网站推广apache poi_5.2.5 实现表格内#xff0c;某一段单元格的复制。
实现思路
1.定位开始位置 2.从开始位置之后#xff0c;在行索引集合中添加行索引下标 3.截至到结束位置。 4.对行索引集合去重#xff0c;并循环行索引集合 5.利用XWPFTableRow对像的getCtRow().copy()方法某一段单元格的复制。
实现思路
1.定位开始位置 2.从开始位置之后在行索引集合中添加行索引下标 3.截至到结束位置。 4.对行索引集合去重并循环行索引集合 5.利用XWPFTableRow对像的getCtRow().copy()方法进行复制此处复制行单元格是为了对复制出来的行单元格做其他操作【如果只是复制可直接使用table.addRow(newRow, endRowIndex i);】 6.最后输出doc
需要的依赖包 dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion5.2.5/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion5.2.5/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-scratchpad/artifactIdversion5.2.5/version/dependency实现代码 /*** param doc* param count 需要循环的次数最少1次*/public static void copyCell(XWPFDocument doc, Integer count) {if (count 1) {return;}ListXWPFTable tables doc.getTables();Integer dRowIndex null;Integer tableIndex null;Boolean isStart false;Boolean isEnd false;ListInteger rowIndexs new LinkedList();for (int i 0; i tables.size(); i) {XWPFTable table tables.get(i);// 遍历表格行for (int rowIndex 0; rowIndex table.getRows().size(); rowIndex) {XWPFTableRow row table.getRow(rowIndex);// 获取行中的所有单元格ListXWPFTableCell cells row.getTableCells();// 遍历单元格获取索引位置for (int cellIndex 0; cellIndex cells.size(); cellIndex) {XWPFTableCell cell cells.get(cellIndex);String cellText cell.getText();if (isStart !isEnd) {// 判断单元格是否包含结束标识此标识是自定义变量if (cellText.equalsIgnoreCase(end)) {isEnd true;dRowIndex rowIndex;tableIndex i;}rowIndexs.add(rowIndex);} else {//判断单元格是否包含开始标识if (cellText.equalsIgnoreCase(start)) {isStart true;rowIndexs.add(rowIndex);}}}}}if (isStart isEnd !rowIndexs.isEmpty()) {XWPFTable table tables.get(tableIndex);ListInteger uniqueList rowIndexs.stream().distinct().collect(Collectors.toList());for (int j 1; j count; j) {int endRowIndex dRowIndex;for (int i 1; i uniqueList.size(); i) {Integer index uniqueList.get(i - 1);XWPFTableRow oldRow table.getRow(index);//此处复制行单元格是为了对复制出来的行单元格做编号操作。XmlObject copy oldRow.getCtRow().copy();XWPFTableRow newRow new XWPFTableRow((CTRow) copy, table);int finalK j 1;newRow.getTableCells().stream().forEach(cell - {for (XWPFParagraph paragraph : cell.getParagraphs()) {ListXWPFRun runs paragraph.getRuns();for (XWPFRun run : runs) {String text run.getText(run.getTextPosition());if (text.contains(【)) {run.setText(text.substring(0, text.length() - 1).concat(String.valueOf(finalK)).concat(】), 0);}}}});//【如果只是复制可直接使用table.addRow(newRow, endRowIndex i);】table.addRow(newRow, endRowIndex i);}dRowIndex dRowIndex uniqueList.size();}}}