poi生成word文档,包含插入表格 - 灰信网(软件开发博客聚合)

package com.controller; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.math.BigInteger;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry; import org.apache.commons.lang3.StringUtils;import org.apache.poi.xwpf.usermodel.XWPFDocument;import org.apache.poi.xwpf.usermodel.XWPFParagraph;import org.apache.poi.xwpf.usermodel.XWPFRun;import org.apache.poi.xwpf.usermodel.XWPFTable;import org.apache.poi.xwpf.usermodel.XWPFTableRow;import org.apache.xmlbeans.XmlCursor;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping; @Controller@RequestMapping(value="/base")  public class TestController {        @RequestMapping(value="/test")    public void docTest()   {        String templatePath = "D:\\demo.doc";        InputStream in = null;        OutputStream out = null;        try {            in = new FileInputStream(templatePath);            XWPFDocument doc = new XWPFDocument(in);            //文本替换            Map<String, String> param = new HashMap<String, String>();            param.put("PartyA", "我是甲方");            param.put("PartyB", "我是乙方");            param.put("date", new SimpleDateFormat("yyyy-MM-dd").format(new Date()));            param.put("text", "合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容合同内容");            List<XWPFParagraph> allXWPFParagraphs = doc.getParagraphs();            for (XWPFParagraph xwpfParagraph : allXWPFParagraphs) {                List<XWPFRun> runs = xwpfParagraph.getRuns();                for (XWPFRun run : runs) {                    String text = run.getText(0);                    if (StringUtils.isNoneBlank(text)) {                        if (text.equals("table")) {                            //表格生成 6行5列.                            int rows = 6;                            int cols = 5;                            XmlCursor cursor = xwpfParagraph.getCTP().newCursor();                            XWPFTable tableOne = doc.insertNewTbl(cursor);                                                        //样式控制                            CTTbl ttbl = tableOne.getCTTbl();                            CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();                              CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();                              CTJc cTJc = tblPr.addNewJc();                              cTJc.setVal(STJc.Enum.forString("center"));//表格居中                            tblWidth.setW(new BigInteger("9000"));//每个表格宽度                            tblWidth.setType(STTblWidth.DXA);                                                          //表格创建                            XWPFTableRow tableRowTitle = tableOne.getRow(0);                            tableRowTitle.getCell(0).setText("标题");                            tableRowTitle.addNewTableCell().setText("内容");                            tableRowTitle.addNewTableCell().setText("姓名");                            tableRowTitle.addNewTableCell().setText("日期");                            tableRowTitle.addNewTableCell().setText("备注");                            for (int i = 1; i < rows; i++) {                                XWPFTableRow createRow = tableOne.createRow();                                for (int j = 0; j < cols; j++) {                                    createRow.getCell(j).setText("我是第"+i+"行,第"+(j+1)+"列");                                }                            }                            run.setText("", 0);                        }else {                            for (Entry<String, String> entry : param.entrySet()) {                                String key = entry.getKey();                                if (text.indexOf(key) != -1) {                                    text = text.replace(key, entry.getValue());                                    run.setText(text, 0);                                }                            }                        }                    }                }            }                        out = new FileOutputStream("D:\\report.doc");            // 输出            doc.write(out);        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                if (out != null) {                    out.close();                }                if (in != null) {                    in.close();                }            } catch (IOException e) {                e.printStackTrace();            }        }    } }

demo.doc 如下:

report.doc 如下:


原网址: 访问
创建于: 2023-05-08 17:34:51
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论