word 操作工具类

1 篇文章 0 订阅
excel 操作参考 链接

HWPF Microsoft Word 97(-2007) --.doc    XWPF Microsoft Word 2007 --.docx
doc只能使用模板(替换内容就可以简单)    docx可以创建     下面为docx操作

POI word 官方代码参考 官方 

POI word 原生表格代码

 public static void main(String[] args) {
        try (XWPFDocument document = new XWPFDocument()) {

            //源代码
            XWPFTable table = document.createTable();
            XWPFTableRow tableRowOne = table.getRow(0);
            tableRowOne.getCell(0).setText("col one, row one");
            tableRowOne.addNewTableCell().setText("col two, row one");
            tableRowOne.addNewTableCell().setText("col three, row one");
            //create second row
            XWPFTableRow tableRowTwo = table.createRow();
            tableRowTwo.createCell().setText("col one, row two");
            tableRowTwo.getCell(1).setText("col two, row two");
            tableRowTwo.getCell(2).setText("col three, row two");
            //create third row
            XWPFTableRow tableRowThree = table.createRow();
            tableRowThree.getCell(0).setText("col one, row three");
            tableRowThree.getCell(1).setText("col two, row three");
            tableRowThree.getCell(2).setText("col three, row three");
            try (
    OutputStream out = new FileOutputStream("C:\\test\\test.docx")) {
                document.write(out);
            }
        } catch (
    IOException e) {
            e.printStackTrace();
        }
    }
}

进行样式封装

(poi使用源生代码)

public class WordUtils {

    //创建表格默认包含一行一列和列段落
    //表格默认参考第一行

    //单元格宽度在tableStyle里

    private WordUtils() {
    }

    /**
     * 创建段落标题
     *
     * @param document 文档
     */
    public static XWPFParagraph createParagraphTitle(XWPFDocument document, String title) {
        XWPFParagraph paragraph = document.createParagraph();
        //设置对齐
        paragraph.setAlignment(ParagraphAlignment.CENTER);
        //设置垂直对齐
        paragraph.setVerticalAlignment(TextAlignment.CENTER);
        paragraph.setBorderTop(Borders.THICK);
        //配置一组公共属性的文本区域
        XWPFRun run = paragraph.createRun();
        run.setText(title);
        //@see https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/aef3c9a6-5d6c-434b-90b7-85e761fd8e62
        run.setFontFamily("Latin Extended-A");
        //y轴
        run.setTextPosition(-20);
        run.setBold(true);
        return paragraph;
    }


    /**
     * 设置自定义表格样式
     *
     * @param table     table
     * @param cellWidth cellWidth
     */
    private static void setTableStyle(XWPFTable table, int cellWidth) {
        CTTblBorders borders = table.getCTTbl().getTblPr().addNewTblBorders();

        CTBorder hBorder = borders.addNewInsideH();
        //边框样式 参考STBorder.class
        hBorder.setVal(STBorder.THICK);
        //边框粗细
        hBorder.setSz(BigInteger.valueOf(1));
        //边框颜色
        hBorder.setColor("8EAADB");

        CTBorder vBorder = borders.addNewInsideV();
        vBorder.setVal(STBorder.THICK);
        vBorder.setSz(BigInteger.valueOf(1));
        vBorder.setColor("8EAADB");

        CTBorder lBorder = borders.addNewLeft();
        lBorder.setVal(STBorder.THICK);
        lBorder.setSz(BigInteger.valueOf(1));
        lBorder.setColor("8EAADB");

        CTBorder rBorder = borders.addNewRight();
        rBorder.setVal(STBorder.THICK);
        rBorder.setSz(BigInteger.valueOf(1));
        rBorder.setColor("8EAADB");

        CTBorder tBorder = borders.addNewTop();
        tBorder.setVal(STBorder.THICK);
        tBorder.setSz(BigInteger.valueOf(1));
        tBorder.setColor("8EAADB");

        CTBorder bBorder = borders.addNewBottom();
        bBorder.setVal(STBorder.THICK);
        bBorder.setSz(BigInteger.valueOf(1));
        bBorder.setColor("8EAADB");

        CTTbl ttbl = table.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.CENTER);
        //单元格宽
        tblWidth.setW(BigInteger.valueOf(cellWidth));
        //单元宽度操作 DXA可自定义(可修改)
        tblWidth.setType(STTblWidth.DXA);

    }

    /**
     * 创建表格
     *
     * @param document  document
     * @param cellWidth cellWidth
     * @return XWPFTable
     */
    public static XWPFTable createTable(XWPFDocument document, int cellWidth) {
        XWPFTable table = document.createTable();
        setTableStyle(table, cellWidth);
        return table;
    }

    /**
     * 设置默认行高
     *
     * @param row row
     */
    private static void setRowStyle(XWPFTableRow row) {
        // 获取表行属性(trPr)
        CTTrPr trPr = row.getCtRow().addNewTrPr();
        // set row height; units = twentieth of a point, 360 = 0.25"
        //设置行高; units =一个点的二十分之一,360 = 0.25
        CTHeight ht = trPr.addNewTrHeight();
        ht.setVal(BigInteger.valueOf(360));
    }

    /**
     * 只能创建第一行以后的行,第一行为模型行作为参考
     *
     * @param table XWPFTable
     * @return XWPFTableRow
     */
    public static XWPFTableRow createTableRow(XWPFTable table) {
        XWPFTableRow row = table.createRow();
        //默认表格有一个初始单元格
        //跨页表格每页顶部的标题行是否重复
        row.setRepeatHeader(true);
        //如果为true,则不允许拆分行
        row.setCantSplitRow(false);
        setRowStyle(row);
        return row;
    }

    /**
     * 获取行  表格默认创建一行一列
     *
     * @param table    表格
     * @param rowIndex 行下标
     * @return XWPFTableRow
     */
    public static XWPFTableRow getTableRow(XWPFTable table, int rowIndex) {
        XWPFTableRow row = table.getRow(rowIndex);
        //默认表格有一个初始单元格
        //跨页表格每页顶部的标题行是否重复
        row.setRepeatHeader(true);
        //如果为true,则不允许拆分行
        row.setCantSplitRow(false);
        setRowStyle(row);
        return row;
    }

    /**
     * 设置单元格样式
     *
     * @param cell cell
     * @return 返回CTShd 自定义颜色
     */
    public static CTShd setCell(XWPFTableCell cell) {
        cell.setWidthType(TableWidthType.AUTO);
        cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
        CTTc ctTc = cell.getCTTc();
        // 获取表格单元格属性元素 (tcPr)
        CTTcPr ctPr = ctTc.addNewTcPr();
        // 将垂直对齐设置为 "center"
        CTVerticalJc va = ctPr.addNewVAlign();
        //水平居中
        ctPr.addNewVAlign().setVal(STVerticalJc.CENTER);
        ctTc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
        va.setVal(STVerticalJc.BOTH);
        // 创建单元格颜色元素
        CTShd ctshd = ctPr.addNewShd();
        ctshd.setColor("auto");
        //清除默认样式
        ctshd.setVal(STShd.CLEAR);
        return ctshd;
    }

    /**
     * 单元格段落
     *
     * @param paragraph paragraph
     * @param fontSize  fontSize
     */
    public static void setParagraph(XWPFParagraph paragraph, int fontSize) {
        paragraph.setAlignment(ParagraphAlignment.CENTER);
        //设置垂直对齐
        paragraph.setVerticalAlignment(TextAlignment.CENTER);
        //配置一组公共属性的文本区域
        XWPFRun run = paragraph.createRun();
        //字体样式@see https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/aef3c9a6-5d6c-434b-90b7-85e761fd8e62
        run.setFontFamily("Latin Extended-A");
        run.setBold(true);
        run.setFontSize(fontSize);
    }


    /**
     * 行样式和单元格样式
     *
     * @param cell cell
     * @param row  row
     */
    private static void setCellStyle(int row, XWPFTableCell cell, XWPFParagraph paragraph, int fontSize) {
        CTShd ctShd = setCell(cell);
        if (row == 0) {
            // 标题行
            ctShd.setFill("4472C4");
        } else if (row % 2 == 0) {
            // 奇数行
            ctShd.setFill("D9E2F3");
        } else {
            // 偶数行
            ctShd.setFill("FFFFFF");
        }
        //段落
        setParagraph(paragraph, fontSize);
    }


    /**
     * 创建单元格 在当前行最后一列追加
     * 例如:当前行5列在后面追加
     * 不使用word模板或手绘表格不要使用
     *
     * @param tableRow XWPFTableRow
     * @param content  String
     * @param rowIndex rowIndex
     * @return XWPFTableCell
     */
    public static XWPFTableCell createTableCell(int rowIndex, XWPFTableRow tableRow, String content, int fontSize) {
        XWPFTableCell cell = tableRow.createCell();
        XWPFParagraph paragraph = cell.addParagraph();
        if (Objects.nonNull(content)) {
            paragraph.createRun().setText(content);
        }
        setCellStyle(rowIndex, cell, paragraph, fontSize);
        return cell;
    }

    /**
     * 添加新单元格  在一行使用 作为其它行的参考
     *
     * @param tableRow XWPFTableRow
     * @param content  String
     * @return XWPFTableCell
     */
    public static XWPFTableCell createTableFirstRowCell(XWPFTableRow tableRow, String content, int fontSize) {
        XWPFTableCell cell = tableRow.addNewTableCell();
        return setFirstRowContent(content, cell, fontSize);
    }

    /**
     * 第一行第一列单元格使用
     *
     * @param tableRow XWPFTableRow
     * @param content  String
     * @return XWPFTableCell
     */
    public static XWPFTableCell getTableFirstRowTitle(XWPFTableRow tableRow, String content, int fontSize, int totalCol) {
        XWPFTableCell cell = tableRow.getCell(0);
        for (int i = 1; i < totalCol; i++) {
            createTableFirstRowCell(tableRow, "", fontSize);
        }
        return setFirstRowContent(content, cell, fontSize);
    }

    /**
     * 第一行单元格设置内容和颜色
     *
     * @param content  content
     * @param cell     cell
     * @param fontSize fontSize
     * @return XWPFTableCell
     */
    private static XWPFTableCell setFirstRowContent(String content, XWPFTableCell cell, int fontSize) {
        XWPFParagraph paragraph = cell.getParagraphArray(0);
        XWPFRun run = paragraph.createRun();
        run.setColor("FFFFFF");
        if (Objects.nonNull(content)) {
            run.setText(content);
        }
        setCellStyle(0, cell, paragraph, fontSize);
        return cell;
    }

    /**
     * 获取单元格
     * 或直接使用原生方法 tableRow.getCell(columnIndex)
     *
     * @param tableRow    XWPFTableRow
     * @param columnIndex columnIndex
     * @return XWPFTableCell
     */
    public static XWPFTableCell getTableCell(XWPFTableRow tableRow, int columnIndex) {
        return tableRow.getCell(columnIndex);
    }

    /**
     * 其它行(第一行除外)通过设置getCell设置单元格的内容
     *
     * @param tableRow    XWPFTableRow
     * @param columnIndex columnIndex
     * @return XWPFTableCell
     */
    public static XWPFTableCell getTableCell(XWPFTableRow tableRow, int rowIndex, int columnIndex, String content, int fontSize) {
        XWPFTableCell cell = tableRow.getCell(columnIndex);
        /*单元格默认的段落ell.setText();
         *无法提供字体颜色和字体选择
         * 采用段落就是普通文本
         */
        //单元格默认有一个段落
        XWPFParagraph paragraph = cell.getParagraphArray(0);
        XWPFRun run = paragraph.createRun();
        if (Objects.nonNull(content)) {
            run.setText(content);
        }
        setCellStyle(rowIndex, cell, paragraph, fontSize);
        return cell;
    }


    /**
     * 合并列
     *
     * @param table      table
     * @param currentRow currentRow
     * @param firstCell  firstCell
     * @param endCell    endCell
     */
    public static void mergeCell(XWPFTable table, int currentRow, int firstCell, int endCell) {
        for (int i = firstCell; i <= endCell; i++) {
            XWPFTableCell cell = table.getRow(currentRow).getCell(i);
            if (i == firstCell) {
                //保留的列
                // The first merged cell is set to the RESTART merge value
                cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                //其它为合并列(指定的endCell)
                // Cells which join (merge) the first one, are set with CONTINUE
                cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }

    /**
     * 合并行
     *
     * @param table      table
     * @param currentCol currentCol
     * @param firstRow   firstRow
     * @param endRow     endRow
     */
    public static void mergeRow(XWPFTable table, int currentCol, int firstRow, int endRow) {
        for (int i = firstRow; i <= endRow; i++) {
            XWPFTableCell cell = table.getRow(i).getCell(currentCol);
            if (i == firstRow) {
                // The first merged cell is set with RESTART merge value
                cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                // Cells which join (merge) the first one, are set with CONTINUE
                cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }

}

(poi提供的方法优化代码) 

public class WordUtils {

    //创建表格默认包含一行一列和列段落
    //表格默认参考第一行

    //单元格宽度在tableStyle里

    private WordUtils() {
    }

    /**
     * 创建段落标题
     *
     * @param document 文档
     */
    public static XWPFParagraph createParagraphTitle(XWPFDocument document, String title) {
        XWPFParagraph paragraph = document.createParagraph();
        //设置对齐
        paragraph.setAlignment(ParagraphAlignment.CENTER);
        //设置垂直对齐
        paragraph.setVerticalAlignment(TextAlignment.CENTER);
        paragraph.setBorderTop(Borders.THICK);
        //配置一组公共属性的文本区域
        XWPFRun run = paragraph.createRun();
        run.setText(title);
        //@see https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/aef3c9a6-5d6c-434b-90b7-85e761fd8e62
        run.setFontFamily("Latin Extended-A");
        //y轴
        run.setTextPosition(-20);
        run.setBold(true);
        return paragraph;
    }

    /**
     * 创建空段落换行
     *
     * @param document 文档
     */
    public static XWPFParagraph createSpace(XWPFDocument document) {
        XWPFParagraph paragraph = document.createParagraph();
        //设置对齐
        paragraph.setAlignment(ParagraphAlignment.CENTER);
        //设置垂直对齐
        paragraph.setVerticalAlignment(TextAlignment.CENTER);
        //配置一组公共属性的文本区域
        XWPFRun run = paragraph.createRun();
        run.setText("");
        //@see https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/aef3c9a6-5d6c-434b-90b7-85e761fd8e62
        run.setFontFamily("Latin Extended-A");
        //y轴
        run.setTextPosition(-20);
        return paragraph;
    }


    /**
     * 设置自定义表格样式
     *
     * @param table table
     * @param width cellWidth
     */
    private static void setTableStyle(XWPFTable table, int width) {
        //表格宽度 PCT(百分比)
        table.setWidthType(TableWidthType.PCT);
        //表格宽度%
        table.setWidth(width);
        table.setTableAlignment(TableRowAlign.CENTER);
        table.setTopBorder(XWPFTable.XWPFBorderType.THICK, 1, 0, "8EAADB");
        table.setBottomBorder(XWPFTable.XWPFBorderType.THICK, 1, 0, "8EAADB");
        table.setLeftBorder(XWPFTable.XWPFBorderType.THICK, 1, 0, "8EAADB");
        table.setRightBorder(XWPFTable.XWPFBorderType.THICK, 1, 0, "8EAADB");
    }

    /**
     * 创建表格
     *
     * @param document document
     * @param width    width
     * @return XWPFTable
     */
    public static XWPFTable createTable(XWPFDocument document, int width) {
        XWPFTable table = document.createTable();
        setTableStyle(table, width);
        return table;
    }

    /**
     * 设置默认行高
     *
     * @param row row
     */
    private static void setRowStyle(XWPFTableRow row) {
        row.setHeight(360);
        //默认表格有一个初始单元格
        //跨页表格每页顶部的标题行是否重复
        row.setRepeatHeader(true);
        //如果为true,则不允许拆分行
        row.setCantSplitRow(false);
    }

    /**
     * 只能创建第一行以后的行,第一行为模型行作为参考
     *
     * @param table XWPFTable
     * @return XWPFTableRow
     */
    public static XWPFTableRow createTableRow(XWPFTable table) {
        XWPFTableRow row = table.createRow();
        setRowStyle(row);
        return row;
    }

    /**
     * 获取行  表格默认创建一行一列
     *
     * @param table    表格
     * @param rowIndex 行下标
     * @return XWPFTableRow
     */
    public static XWPFTableRow getTableRow(XWPFTable table, int rowIndex) {
        XWPFTableRow row = table.getRow(rowIndex);
        setRowStyle(row);
        return row;
    }

    /**
     * 设置单元格样式
     *
     * @param cell cell
     */
    public static void setCell(XWPFTableCell cell) {
        XWPFTableRow tableRow = cell.getTableRow();
        int size = tableRow.getTableCells().size();
        int width = tableRow.getTable().getWidth();
        //宽度 PCT(百分比)
        cell.setWidthType(TableWidthType.PCT);
        //宽度
        cell.setWidth(String.valueOf(width / size));
        cell.setColor("auto");
        cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
    }

    /**
     * 单元格段落
     *
     * @param paragraph paragraph
     * @param fontSize  fontSize
     */
    public static void setParagraph(XWPFParagraph paragraph, int fontSize) {
        paragraph.setAlignment(ParagraphAlignment.CENTER);
        //设置垂直对齐
        paragraph.setVerticalAlignment(TextAlignment.CENTER);
        //配置一组公共属性的文本区域
        XWPFRun run = paragraph.createRun();
        //字体样式@see https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/aef3c9a6-5d6c-434b-90b7-85e761fd8e62
        run.setFontFamily("Latin Extended-A");
        run.setBold(true);
        run.setFontSize(fontSize);
    }


    /**
     * 行样式和单元格样式
     *
     * @param cell cell
     * @param row  row
     */
    private static void setCellStyle(int row, XWPFTableCell cell, XWPFParagraph paragraph, int fontSize) {
        setCell(cell);
        if (row == 0) {
            // 标题行
            cell.setColor("4472C4");
        } else if (row % 2 == 0) {
            // 奇数行
            cell.setColor("D9E2F3");
        } else {
            // 偶数行
            cell.setColor("FFFFFF");
        }
        //段落
        setParagraph(paragraph, fontSize);
    }


    /**
     * 创建单元格 在当前行最后一列追加
     * 例如:当前行5列在后面追加
     * 不使用word模板或手绘表格不要使用
     *
     * @param tableRow XWPFTableRow
     * @param content  String
     * @param rowIndex rowIndex
     * @return XWPFTableCell
     */
    public static XWPFTableCell createTableCell(int rowIndex, XWPFTableRow tableRow, String content, int fontSize) {
        XWPFTableCell cell = tableRow.createCell();
        XWPFParagraph paragraph = cell.addParagraph();
        if (Objects.nonNull(content)) {
            paragraph.createRun().setText(content);
        }
        setCellStyle(rowIndex, cell, paragraph, fontSize);
        return cell;
    }

    /**
     * 添加新单元格  在一行使用 作为其它行的参考
     *
     * @param tableRow XWPFTableRow
     * @param content  String
     * @return XWPFTableCell
     */
    public static XWPFTableCell createTableFirstRowCell(XWPFTableRow tableRow, String content, int fontSize) {
        XWPFTableCell cell = tableRow.addNewTableCell();
        return setFirstRowContent(content, cell, fontSize);
    }

    /**
     * 第一行第一列单元格使用
     *
     * @param tableRow XWPFTableRow
     * @param content  String
     * @return XWPFTableCell
     */
    public static XWPFTableCell getTableFirstRowTitle(XWPFTableRow tableRow, String content, int fontSize, int totalCol) {
        XWPFTableCell cell = tableRow.getCell(0);
        for (int i = 1; i < totalCol; i++) {
            createTableFirstRowCell(tableRow, "", fontSize);
        }
        return setFirstRowContent(content, cell, fontSize);
    }

    /**
     * 第一行单元格设置内容和颜色
     *
     * @param content  content
     * @param cell     cell
     * @param fontSize fontSize
     * @return XWPFTableCell
     */
    private static XWPFTableCell setFirstRowContent(String content, XWPFTableCell cell, int fontSize) {
        XWPFParagraph paragraph = cell.getParagraphArray(0);
        XWPFRun run = paragraph.createRun();
        run.setColor("FFFFFF");
        if (Objects.nonNull(content)) {
            run.setText(content);
        }
        setCellStyle(0, cell, paragraph, fontSize);
        return cell;
    }

    /**
     * 获取单元格
     * 或直接使用原生方法 tableRow.getCell(columnIndex)
     *
     * @param tableRow    XWPFTableRow
     * @param columnIndex columnIndex
     * @return XWPFTableCell
     */
    public static XWPFTableCell getTableCell(XWPFTableRow tableRow, int columnIndex) {
        return tableRow.getCell(columnIndex);
    }

    /**
     * 其它行(第一行除外)通过设置getCell设置单元格的内容
     *
     * @param tableRow    XWPFTableRow
     * @param columnIndex columnIndex
     * @return XWPFTableCell
     */
    public static XWPFTableCell getTableCell(XWPFTableRow tableRow, int rowIndex, int columnIndex, String content, int fontSize) {
        XWPFTableCell cell = tableRow.getCell(columnIndex);
        /*单元格默认的段落cell.setText();
         *无法提供字体颜色和字体选择
         * 采用段落就是普通文本
         */
        //单元格默认有一个段落
        XWPFParagraph paragraph = cell.getParagraphArray(0);
        XWPFRun run = paragraph.createRun();
        if (Objects.nonNull(content)) {
            run.setText(content);
        }
        setCellStyle(rowIndex, cell, paragraph, fontSize);
        return cell;
    }


    /**
     * 合并列
     *
     * @param table      table
     * @param currentRow currentRow
     * @param firstCell  firstCell
     * @param endCell    endCell
     */
    public static void mergeCell(XWPFTable table, int currentRow, int firstCell, int endCell) {
        for (int i = firstCell; i <= endCell; i++) {
            XWPFTableCell cell = table.getRow(currentRow).getCell(i);
            if (i == firstCell) {
                //保留的列
                // The first merged cell is set to the RESTART merge value
                cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            } else {
                //其它为合并列(指定的endCell)
                // Cells which join (merge) the first one, are set with CONTINUE
                cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            }
        }
    }

    /**
     * 合并行
     *
     * @param table      table
     * @param currentCol currentCol
     * @param firstRow   firstRow
     * @param endRow     endRow
     */
    public static void mergeRow(XWPFTable table, int currentCol, int firstRow, int endRow) {
        for (int i = firstRow; i <= endRow; i++) {
            XWPFTableCell cell = table.getRow(i).getCell(currentCol);
            if (i == firstRow) {
                // The first merged cell is set with RESTART merge value
                cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
            } else {
                // Cells which join (merge) the first one, are set with CONTINUE
                cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
            }
        }
    }

}

word 只支持string类型 

//导入静态包
import static com.my.utils.WordUtils.*;

public static void test(XWPFDocument document, List<MyTest> data) {
        int fontSize = 15;
        int column=5;
        createParagraphTitle(document, "标题");
        //第一个表格
        XWPFTable table = createTable(document,6 * 100000);
        //第一行
        XWPFTableRow tableRow = getTableRow(table, 0);
        getTableFirstRowTitle(tableRow, "标题", fontSize, column);
        mergeCell(table, 0, 0, column - 1);
        //第二行
        XWPFTableRow tableRow1 = createTableRow(table);
        String[] title = {"标题", "标题", "标题","标题","标题"};
        for (int i = 0; i < title.length; i++) {
            getTableCell(tableRow1, 1, i, title[i], fontSize);
        }
        //第3行遍历内容
        if (Objects.nonNull(data)) {
            int rowStyle=3;
            for (int i = 0; i < data.size(); i++) {
                XWPFTableRow tableRow2 = createTableRow(table);

                //word都是文本类型只支持string

                getTableCell(tableRow2, rowStyle, 0, String.valueOf(i + 1), fontSize);
                
                getTableCell(tableRow2, rowStyle, 1, data.get(i).getTitle1(), fontSize);
                
                getTableCell(tableRow2, rowStyle, 2, data.get(i).getTitle2(), fontSize);

                getTableCell(tableRow2, rowStyle, 3, data.get(i).getTitle3(), fontSize);

                getTableCell(tableRow2, rowStyle, 4, data.get(i).getTitle4(), fontSize);
                rowStyle++;
            }
        }
    }

 public static void main(String[] args) {
        try (XWPFDocument document = new XWPFDocument()) {
             //数据不提供了
             test(XWPFDocument document,data);
            try (
    OutputStream out = new FileOutputStream("C:\\test\\test.docx")) {
                document.write(out);
            }
        } catch (
    IOException e) {
            e.printStackTrace();
        }
    }
}

效果 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值