| | |
| | | import org.apache.commons.logging.Log; |
| | | import org.apache.commons.logging.LogFactory; |
| | | import org.apache.poi.xwpf.usermodel.*; |
| | | import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; |
| | | |
| | | import java.io.*; |
| | | import java.util.List; |
| | |
| | | xwpfDocument.write(outputStream); |
| | | |
| | | outputStream.close(); |
| | | inputStream.close(); |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | | } |
| | |
| | | /** |
| | | * 插入数据 |
| | | */ |
| | | private static void insertData(XWPFTable table,List<String[]> addList) { |
| | | private static void insertData(XWPFTable table, List<String[]> addList) { |
| | | XWPFTableRow oldRow = table.getRow(1); |
| | | for (int i = 1; i < addList.size(); i++) { |
| | | XWPFTableRow row = table.createRow(); |
| | | row.setHeight(oldRow.getHeight()); |
| | | } |
| | | |
| | | List<XWPFTableRow> rowList = table.getRows(); |
| | | for (int i = 1; i < rowList.size(); i++) { |
| | | XWPFTableRow xwpfTableRow = rowList.get(i); |
| | | |
| | | List<XWPFTableCell> tableCells = xwpfTableRow.getTableCells(); |
| | | for (int j = 0; j < tableCells.size(); j++) { |
| | | XWPFTableCell xwpfTableCell = tableCells.get(j); |
| | | xwpfTableCell.setText(addList.get(i - 1)[j]); |
| | | XWPFTableCell oldCell = oldRow.getTableCells().get(j); |
| | | XWPFTableCell newCell = tableCells.get(j); |
| | | |
| | | //newCell.setText(addList.get(i - 1)[j]); |
| | | setCellText(oldCell, newCell, addList.get(i - 1)[j]); |
| | | } |
| | | } |
| | | } |
| | |
| | | public static boolean isReplacement(String text) { |
| | | return text.contains("$"); |
| | | } |
| | | |
| | | /** |
| | | * 复制模板行的属性 |
| | | */ |
| | | private static void setCellText(XWPFTableCell tmpCell, XWPFTableCell cell, String text) { |
| | | CTTc cttc2 = tmpCell.getCTTc(); |
| | | CTTcPr ctPr2 = cttc2.getTcPr(); |
| | | CTTc cttc = cell.getCTTc(); |
| | | CTTcPr ctPr = cttc.addNewTcPr(); |
| | | if (ctPr2.getTcW() != null) { |
| | | ctPr.addNewTcW().setW(ctPr2.getTcW().getW()); |
| | | } |
| | | if (ctPr2.getVAlign() != null) { |
| | | ctPr.addNewVAlign().setVal(ctPr2.getVAlign().getVal()); |
| | | } |
| | | if (ctPr2.getTcBorders() != null) { |
| | | ctPr.setTcBorders(ctPr2.getTcBorders()); |
| | | } |
| | | |
| | | XWPFParagraph tmpP = tmpCell.getParagraphs().get(0); |
| | | XWPFParagraph cellP = cell.getParagraphs().get(0); |
| | | XWPFRun tmpR = null; |
| | | if (tmpP.getRuns() != null && tmpP.getRuns().size() > 0) { |
| | | tmpR = tmpP.getRuns().get(0); |
| | | } |
| | | XWPFRun cellR = cellP.createRun(); |
| | | cellR.setText(text); |
| | | |
| | | // 复制字体信息 |
| | | if (tmpR != null) { |
| | | if (!cellR.isBold()) { |
| | | cellR.setBold(tmpR.isBold()); |
| | | } |
| | | cellR.setItalic(tmpR.isItalic()); |
| | | cellR.setUnderline(tmpR.getUnderline()); |
| | | cellR.setColor(tmpR.getColor()); |
| | | cellR.setTextPosition(tmpR.getTextPosition()); |
| | | if (tmpR.getFontSize() != -1) { |
| | | cellR.setFontSize(tmpR.getFontSize()); |
| | | } |
| | | if (tmpR.getFontFamily() != null) { |
| | | cellR.setFontFamily(tmpR.getFontFamily()); |
| | | } |
| | | if (tmpR.getCTR() != null) { |
| | | if (tmpR.getCTR().isSetRPr()) { |
| | | CTRPr tmpRPr = tmpR.getCTR().getRPr(); |
| | | if (tmpRPr.isSetRFonts()) { |
| | | CTFonts tmpFonts = tmpRPr.getRFonts(); |
| | | CTRPr cellRPr = cellR.getCTR().isSetRPr() ? cellR |
| | | .getCTR().getRPr() : cellR.getCTR().addNewRPr(); |
| | | CTFonts cellFonts = cellRPr.isSetRFonts() ? cellRPr |
| | | .getRFonts() : cellRPr.addNewRFonts(); |
| | | cellFonts.setAscii(tmpFonts.getAscii()); |
| | | cellFonts.setAsciiTheme(tmpFonts.getAsciiTheme()); |
| | | cellFonts.setCs(tmpFonts.getCs()); |
| | | cellFonts.setCstheme(tmpFonts.getCstheme()); |
| | | cellFonts.setEastAsia(tmpFonts.getEastAsia()); |
| | | cellFonts.setEastAsiaTheme(tmpFonts.getEastAsiaTheme()); |
| | | cellFonts.setHAnsi(tmpFonts.getHAnsi()); |
| | | cellFonts.setHAnsiTheme(tmpFonts.getHAnsiTheme()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | // 复制段落信息 |
| | | cellP.setAlignment(tmpP.getAlignment()); |
| | | cellP.setVerticalAlignment(tmpP.getVerticalAlignment()); |
| | | cellP.setBorderBetween(tmpP.getBorderBetween()); |
| | | cellP.setBorderBottom(tmpP.getBorderBottom()); |
| | | cellP.setBorderLeft(tmpP.getBorderLeft()); |
| | | cellP.setBorderRight(tmpP.getBorderRight()); |
| | | cellP.setBorderTop(tmpP.getBorderTop()); |
| | | cellP.setPageBreak(tmpP.isPageBreak()); |
| | | if (tmpP.getCTP() != null) { |
| | | if (tmpP.getCTP().getPPr() != null) { |
| | | CTPPr tmpPPr = tmpP.getCTP().getPPr(); |
| | | CTPPr cellPPr = cellP.getCTP().getPPr() != null ? cellP.getCTP().getPPr() : cellP.getCTP().addNewPPr(); |
| | | |
| | | // 复制段落间距信息 |
| | | CTSpacing tmpSpacing = tmpPPr.getSpacing(); |
| | | if (tmpSpacing != null) { |
| | | CTSpacing cellSpacing = cellPPr.getSpacing() != null ? cellPPr |
| | | .getSpacing() : cellPPr.addNewSpacing(); |
| | | if (tmpSpacing.getAfter() != null) { |
| | | cellSpacing.setAfter(tmpSpacing.getAfter()); |
| | | } |
| | | if (tmpSpacing.getAfterAutospacing() != null) { |
| | | cellSpacing.setAfterAutospacing(tmpSpacing |
| | | .getAfterAutospacing()); |
| | | } |
| | | if (tmpSpacing.getAfterLines() != null) { |
| | | cellSpacing.setAfterLines(tmpSpacing.getAfterLines()); |
| | | } |
| | | if (tmpSpacing.getBefore() != null) { |
| | | cellSpacing.setBefore(tmpSpacing.getBefore()); |
| | | } |
| | | if (tmpSpacing.getBeforeAutospacing() != null) { |
| | | cellSpacing.setBeforeAutospacing(tmpSpacing |
| | | .getBeforeAutospacing()); |
| | | } |
| | | if (tmpSpacing.getBeforeLines() != null) { |
| | | cellSpacing.setBeforeLines(tmpSpacing.getBeforeLines()); |
| | | } |
| | | if (tmpSpacing.getLine() != null) { |
| | | cellSpacing.setLine(tmpSpacing.getLine()); |
| | | } |
| | | if (tmpSpacing.getLineRule() != null) { |
| | | cellSpacing.setLineRule(tmpSpacing.getLineRule()); |
| | | } |
| | | } |
| | | |
| | | // 复制段落缩进信息 |
| | | CTInd tmpInd = tmpPPr.getInd(); |
| | | if (tmpInd != null) { |
| | | CTInd cellInd = cellPPr.getInd() != null ? cellPPr.getInd() |
| | | : cellPPr.addNewInd(); |
| | | if (tmpInd.getFirstLine() != null) { |
| | | cellInd.setFirstLine(tmpInd.getFirstLine()); |
| | | } |
| | | if (tmpInd.getFirstLineChars() != null) { |
| | | cellInd.setFirstLineChars(tmpInd.getFirstLineChars()); |
| | | } |
| | | if (tmpInd.getHanging() != null) { |
| | | cellInd.setHanging(tmpInd.getHanging()); |
| | | } |
| | | if (tmpInd.getHangingChars() != null) { |
| | | cellInd.setHangingChars(tmpInd.getHangingChars()); |
| | | } |
| | | if (tmpInd.getLeft() != null) { |
| | | cellInd.setLeft(tmpInd.getLeft()); |
| | | } |
| | | if (tmpInd.getLeftChars() != null) { |
| | | cellInd.setLeftChars(tmpInd.getLeftChars()); |
| | | } |
| | | if (tmpInd.getRight() != null) { |
| | | cellInd.setRight(tmpInd.getRight()); |
| | | } |
| | | if (tmpInd.getRightChars() != null) { |
| | | cellInd.setRightChars(tmpInd.getRightChars()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |