zoukankan      html  css  js  c++  java
  • poi导出word表格

    代码如下:

    package com.ksource.pwlp.util;
    
    import java.io.FileOutputStream;
    import java.math.BigInteger;
    import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
    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.XWPFTableCell;
    import org.apache.poi.xwpf.usermodel.XWPFTableRow;
    import org.apache.poi.xwpf.usermodel.XWPFTableCell.XWPFVertAlign;
    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.CTTc;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc;
    
    public class CreateTable {
    
        public void createSimpleTable(String savePath) throws Exception {
            XWPFDocument xdoc = new XWPFDocument();
            XWPFParagraph xp = xdoc.createParagraph();
            xp.setSpacingBefore(0);
            XWPFRun r1 = xp.createRun();
            r1.setText("湖北省人民检察院");
            r1.addBreak(); // 换行
            r1.setText("证据清单");
            r1.setFontFamily("宋体");
            r1.setFontSize(16);
            r1.setTextPosition(10);
            r1.setBold(true);
            xp.setAlignment(ParagraphAlignment.CENTER);
    
            Integer col_total_count = 4; // 表格最多的列数
            Integer data_count = 20; // 需要创建的总条数
    
            XWPFTable xTable = xdoc.createTable(1, col_total_count);
    
            CTTbl ttbl = xTable.getCTTbl();
            CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl
                    .getTblPr();
            CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr
                    .addNewTblW();
            tblWidth.setW(new BigInteger("8600"));
            tblWidth.setType(STTblWidth.DXA);
    
            // 创建表头数据
            int i = 0;
            xTable.getRow(i).setHeight(500);
            setCellText(xdoc, xTable.getRow(i).getCell(0), "序号", "FFFFFF", getCellWidth(0));
            setCellText(xdoc, xTable.getRow(i).getCell(1), "类别", "FFFFFF", getCellWidth(1));
            setCellText(xdoc, xTable.getRow(i).getCell(2), "证据名称", "FFFFFF", getCellWidth(2));
            setCellText(xdoc, xTable.getRow(i).getCell(3), "备注", "FFFFFF", getCellWidth(3));
    
            // 创建表格内容
            i++;
            for (int i2 = i; i2 < data_count; i2++) {
                XWPFTableRow row = xTable.insertNewTableRow(i2);
                row.setHeight(450);
                for (int j = 0, j2 = 0; j < col_total_count; j++, j2++) {
                    XWPFTableCell cell = row.createCell();
                    CTTc cttc = cell.getCTTc();
                    CTTcPr cellPr = cttc.addNewTcPr();
                    cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
                    cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
                    cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(j2)));
                    cell.setText("测试" + j);
                }
            }
            FileOutputStream fos = new FileOutputStream(savePath);
            xdoc.write(fos);
            fos.close();
        }
    
        /**
         * 设置表头内容
         * 
         * @param xDocument
         * @param cell
         * @param text
         * @param bgcolor
         * @param width
         */
        private static void setCellText(XWPFDocument xDocument, XWPFTableCell cell,
                String text, String bgcolor, int width) {
            CTTc cttc = cell.getCTTc();
            CTTcPr cellPr = cttc.addNewTcPr();
            cellPr.addNewTcW().setW(BigInteger.valueOf(width));
            cell.setColor(bgcolor);
            cell.setVerticalAlignment(XWPFVertAlign.CENTER);
            CTTcPr ctPr = cttc.addNewTcPr();
            ctPr.addNewVAlign().setVal(STVerticalJc.CENTER);
            cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
            cell.setText(text);
        }
    
        /**
         * 设置列宽
         * 
         * @param index
         * @return
         */
        private static int getCellWidth(int index) {
            int cwidth = 1000;
            if (index == 0) {
                cwidth = 2100;
            } else if (index == 1) {
                cwidth = 2100;
            } else if (index == 2) {
                cwidth = 2100;
            } else if (index == 3) {
                cwidth = 2100;
            }
            return cwidth;
        }
    
        public static void main(String[] args) throws Exception {
            CreateTable t = new CreateTable();
            t.createSimpleTable("g:/"+ System.currentTimeMillis() + ".docx");
        }
    }

    生成word如下:

  • 相关阅读:
    ftp下载显示进度
    Java 类加载器(转)
    Java中的Enum的使用与分析
    Iterator的remove方法可保证从源集合中安全地删除对象(转)
    [置顶] 关于我
    Java实现 蓝桥杯 算法提高 周期字串
    Java实现 蓝桥杯 算法提高 学霸的迷宫
    Java实现 蓝桥杯 算法提高 上帝造题五分钟
    Java实现 蓝桥杯 算法提高 上帝造题五分钟
    Java实现 蓝桥杯 算法提高 周期字串
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/11811782.html
Copyright © 2011-2022 走看看