Refine search
/** * returns the XWPFTableCell which belongs to the CTTC cell * if there is no XWPFTableCell which belongs to the parameter CTTc cell null will be returned */ public XWPFTableCell getTableCell(CTTc cell) { for (int i = 0; i < tableCells.size(); i++) { if (tableCells.get(i).getCTTc() == cell) return tableCells.get(i); } return null; }
@Override protected void prepareForCommit() { // must contain at least an empty paragraph if (bodyElements.size() == 0) { createParagraph(); } // Cells must contain at least an empty paragraph for (XWPFTable tbl : tables) { for (XWPFTableRow row : tbl.tableRows) { for (XWPFTableCell cell : row.getTableCells()) { if (cell.getBodyElements().size() == 0) { cell.addParagraph(); } } } } super.prepareForCommit(); } }
XWPFDocument doc = new XWPFDocument(OPCPackage.open("input.docx")); for (XWPFParagraph p : doc.getParagraphs()) { List<XWPFRun> runs = p.getRuns(); if (runs != null) { for (XWPFRun r : runs) { String text = r.getText(0); if (text != null && text.contains("needle")) { text = text.replace("needle", "haystack"); r.setText(text, 0); } } } } for (XWPFTable tbl : doc.getTables()) { for (XWPFTableRow row : tbl.getRows()) { for (XWPFTableCell cell : row.getTableCells()) { for (XWPFParagraph p : cell.getParagraphs()) { for (XWPFRun r : p.getRuns()) { String text = r.getText(0); if (text.contains("needle")) { text = text.replace("needle", "haystack"); r.setText(text); } } } } } } doc.write(new FileOutputStream("output.docx"));
private void appendBodyElementText(StringBuilder text, IBodyElement e, boolean isLast) { if (e instanceof XWPFParagraph) { text.append(((XWPFParagraph) e).getText()); if (!isLast) { text.append('\t'); } } else if (e instanceof XWPFTable) { XWPFTable eTable = (XWPFTable) e; for (XWPFTableRow row : eTable.getRows()) { for (XWPFTableCell cell : row.getTableCells()) { List<IBodyElement> localBodyElements = cell.getBodyElements(); for (int i = 0; i < localBodyElements.size(); i++) { boolean localIsLast = (i == localBodyElements.size() - 1); appendBodyElementText(text, localBodyElements.get(i), localIsLast); } } } if (!isLast) { text.append('\n'); } } else if (e instanceof XWPFSDT) { text.append(((XWPFSDT) e).getContent().getText()); if (!isLast) { text.append('\t'); } } }
void visitTable(XWPFTable table) { if (null == table) return; List<XWPFTableRow> rows = table.getRows(); if (null == rows) return; for (XWPFTableRow row : rows) { List<XWPFTableCell> cells = row.getTableCells(); if (null == cells) continue; for (XWPFTableCell cell : cells) { visitParagraphs(cell.getParagraphs()); visitTables(cell.getTables()); } } }
/** * 获取表格第一行第一列单元格的值 * * @param table * @return */ private String getFirstCellValue(XWPFTable table){ String textValue = null; if(table==null||table.getRows().size()<1)return textValue; XWPFTableRow row = table.getRow(0); if(row==null||row.getTableCells().size()<1)return textValue; XWPFTableCell cell = row.getCell(0); textValue = cell.getText(); return textValue; }
XWPFTable table = cell.getTableRow().getTable(); for ( int i = rowIndex + 1; i < table.getRows().size(); i++ ) row = table.getRow( i ); c = row.getCell( cellIndex ); if ( c == null )
private void mergeCellsHorizontal(XWPFTable table, int row, int startCol,int endCol) { for (int cellIndex = startCol; cellIndex <= endCol; cellIndex++) { XWPFTableCell cell = table.getRow(row).getCell(cellIndex); if (cellIndex == startCol) { cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART); } else { cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE); } } }
/** * 渲染一列单元格操作 * * @param cell 原始单元格(表达式所在的单元格) * @param params 单元格值 */ public void nextCell(XWPFTableCell cell, Object... params) { XWPFTableCell cell_tmp = nowRow.getCell(firstRow.getTableCells().indexOf(cell)); if (params == null) params = new String[]{""}; if (cell_tmp == null) { cell_tmp = nowRow.addNewTableCell(); cell_tmp.addParagraph(cell.getParagraphArray(0)); } for (int i = 0, len = cell.getParagraphs().size(); i < len; i++) { cell.removeParagraph(i); } cell_tmp.setText(StringUtils.concat(params)); }
XWPFTableCell cellOfOriginalTable = rowOfOriginalTable.getCell(1); XWPFParagraph p = cellOfOriginalTable.addParagraph(); XWPFTableRow rowOfNestedTable = nestedTable.createRow(); XWPFTableCell cellOfNestedTable = rowOfNestedTable.createCell(); cellOfNestedTable.setText("Cell 0,0"); cellOfNestedTable = rowOfNestedTable.createCell(); cellOfNestedTable.setText("Cell 0,1"); rowOfNestedTable = nestedTable.createRow(); cellOfNestedTable = rowOfNestedTable.getCell(0); cellOfNestedTable.setText("Cell 1,0"); cellOfNestedTable = rowOfNestedTable.getCell(1); cellOfNestedTable.setText("Cell 1,1"); cellOfOriginalTable.addParagraph();
/** * 解析下一行,并且生成更多的行 * * @Author JueYue * @date 2013-11-18 * @param table * @param listobj2 */ public static void parseNextRowAndAddRow(XWPFTable table, int index, List<Object> list) throws Exception { XWPFTableRow currentRow = table.getRow(index); String[] params = parseCurrentRowGetParams(currentRow); table.removeRow(index);// 移除这一行 int cellIndex = 0;// 创建完成对象一行好像多了一个cell for (Object obj : list) { currentRow = table.createRow(); for (cellIndex = 0; cellIndex < currentRow.getTableCells().size(); cellIndex++) { currentRow.getTableCells().get(cellIndex).setText(PoiPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0).toString()); } for (; cellIndex < params.length; cellIndex++) { currentRow.createCell().setText(PoiPublicUtil.getValueDoWhile(obj, params[cellIndex].split("\\."), 0).toString()); } } }
nbColumns = XWPFTableUtil.computeColWidths( row.getTable() ).length; int rowIndex = table.getRows().indexOf( row ); boolean firstRow = rowIndex == 0; boolean lastRow = rowIndex == ( table.getRows().size() - 1 ); CTRow ctRow = row.getCtRow(); XmlCursor c = ctRow.newCursor(); c.selectPath( "./*" ); XWPFTableCell cell = row.getTableCell( tc ); cellIndex = getCellIndex( cellIndex, cell ); lastCol = ( cellIndex == nbColumns - 1 ); for ( CTTc ctTc : tcList ) XWPFTableCell cell = new XWPFTableCell( ctTc, row, row.getTable().getBody() ); cellIndex = getCellIndex( cellIndex, cell ); lastCol = ( cellIndex == nbColumns - 1 );
List<Row> rows=page.getRows(); XWPFTable table = document.createTable(rows.size(), totalColumn); table.getCTTbl().getTblPr().unsetTblBorders(); table.getCTTbl().addNewTblPr().addNewTblW().setW(BigInteger.valueOf(DxaUtils.points2dxa(tableWidth))); for(int rowNumber=0;rowNumber<rows.size();rowNumber++){ Row row=rows.get(rowNumber); int height=row.getRealHeight(); XWPFTableRow tableRow=table.getRow(rowNumber); tableRow.setHeight(DxaUtils.points2dxa(height)); Map<Column,Cell> colCell=cellMap.get(row); if(colCell==null)continue; continue; XWPFTableCell tableCell=tableRow.getCell(colNumber); if(tableCell==null){ continue; tableCell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(DxaUtils.points2dxa(width))); buildTableCellStyle(table,tableCell,cell,rowNumber,colNumber);
CellStyle rowStyle=cell.getRow().getCustomCellStyle(); CellStyle colStyle=cell.getColumn().getCustomCellStyle(); CTTcPr cellProperties = tableCell.getCTTc().addNewTcPr(); Border leftBorder=style.getLeftBorder(); Border rightBorder=style.getRightBorder(); int end=start+rowSpan; for(int i=start;i<end;i++){ XWPFTableCell c=table.getRow(i).getCell(columnNumber); buildCellBorder(leftBorder, c, 1); int end=start+rowSpan; for(int i=start;i<end;i++){ XWPFTableCell c=table.getRow(i).getCell(lastCol); buildCellBorder(style.getRightBorder(), c, 2); XWPFTableCell c=table.getRow(rowNumber).getCell(lastCol); buildCellBorder(rightBorder, c, 2); List<XWPFParagraph> paras=tableCell.getParagraphs(); XWPFParagraph para=null; if(paras!=null && paras.size()>0){ para=paras.get(0); }else{ para=tableCell.addParagraph();
XWPFTableRow tableRow = table.getRow(row); ObjectUtils.requireNonNull(tableRow, "Row " + row + " do not exist in the table"); cell = tableRow.getCell(i); if (null == cell) { logger.warn("Extra cell data at row {}, but no extra cell: col {}", row, cell); cell.setColor(style.getBackgroundColor()); for (int j = 0; j < fragment.length; j++) { if (0 == j) { CTTc ctTc = cell.getCTTc(); CTP ctP = (ctTc.sizeOfPArray() == 0) ? ctTc.addNewP() : ctTc.getPArray(0); par = new XWPFParagraph(ctP, cell); } else { par = cell.addParagraph();
/** * 换行操作 * * @param cell 触发此操作的单元格 */ public void nextRow(XWPFTableCell cell) { if (nowRow == null) { firstRow = nowRow = cell.getTableRow(); rowIndex = firstRow.getTable().getRows().indexOf(firstRow); } else { nowRow = nowRow.getTable().insertNewTableRow(rowIndex++); nowRow.setHeight(firstRow.getHeight()); } }
XWPFTableRow currentRow = table.getRow(index); String[] params = parseCurrentRowGetParams(currentRow); String listname = params[0]; String[] keys = listname.replaceAll("\\s{1,}", " ").trim().split(" "); params[0] = keys[1]; table.removeRow(index);// 移除这一行 int cellIndex = 0;// 创建完成对象一行好像多了一个cell Map<String, Object> tempMap = Maps.newHashMap(); for (Object obj : list) { currentRow = isCreate ? table.insertNewTableRow(index++) : table.getRow(index++); tempMap.put("t", obj); for (cellIndex = 0; cellIndex < currentRow.getTableCells().size(); cellIndex++) { String val = eval(params[cellIndex], tempMap).toString(); currentRow.getTableCells().get(cellIndex).setText(""); PoiPublicUtil.setWordText( currentRow.getTableCells().get(cellIndex).addParagraph().createRun(), val); PoiPublicUtil.setWordText(currentRow.createCell().addParagraph().createRun(), val);
XWPFDocument doc = new XWPFDocument(new FileInputStream(fileName)); List<XWPFTable> table = doc.getTables(); for (XWPFTable xwpfTable : table) { List<XWPFTableRow> row = xwpfTable.getRows(); for (XWPFTableRow xwpfTableRow : row) { List<XWPFTableCell> cell = xwpfTableRow.getTableCells(); for (XWPFTableCell xwpfTableCell : cell) { if (xwpfTableCell != null) { System.out.println(xwpfTableCell.getText()); String s = xwpfTableCell.getText(); for (XWPFParagraph p : xwpfTableCell.getParagraphs()) { for (XWPFRun run : p.getRuns()) { for (XWPFPicture pic : run.getEmbeddedPictures()) { byte[] pictureData = pic.getPictureData().getData(); System.out.println("picture : " + pictureData); } } } } } } }
private XWPFTable generatePosTableRows(final XWPFDocument templateDocument, final List<RechnungsPositionDO> positionen) { XWPFTable posTbl = null; for (XWPFTable tbl : templateDocument.getTables()) { if (tbl.getRow(0).getCell(0).getText().contains("Beschreibung")) { posTbl = tbl; } } for (int i = 2; i <= positionen.size(); i++) { copyTableRow(posTbl, i); } int rowCount = 1; for (RechnungsPositionDO position : positionen) { for (XWPFTableCell cell : posTbl.getRow(rowCount).getTableCells()) { for (XWPFParagraph cellParagraph : cell.getParagraphs()) { replaceInParagraph(cellParagraph, "id", String.valueOf(position.getNumber())); } } rowCount++; } return posTbl; }
private void replaceSumDataInTable(final XWPFTable posTbl, final RechnungDO invoice) { Map<String, String> map = new HashMap<>(); map.put("Zwischensumme", formatBigDecimal(invoice.getNetSum())); map.put("MwSt", formatBigDecimal(invoice.getVatAmountSum())); map.put("Gesamtbetrag", formatBigDecimal(invoice.getGrossSum())); int tableRowSize = posTbl.getRows().size(); for (int startSumRow = tableRowSize - 2; startSumRow < tableRowSize; startSumRow++) { for (XWPFTableCell cell : posTbl.getRow(startSumRow).getTableCells()) { for (XWPFParagraph cellParagraph : cell.getParagraphs()) { replaceInParagraph(cellParagraph, map); } } } }