aspose-words导出word方法

一、引用依赖

xml 复制代码
            <dependency>
                <groupId>com.aspose</groupId>
                <artifactId>aspose-words</artifactId>
                <version>19.5</version>
                <classifier>jdk17</classifier>
            </dependency>

二、导出类

java 复制代码
public class WordTable {
    //定义文档接口
    public Document doc;
    public DocumentBuilder builder;
 public WordTable() {
    }
	/**
     * 初始化构造方法
     * @param doc 模板地址
     */
    public WordTable(String doc) {
        try {
            // 建立DocumentBuilder物件
            this.doc = new Document(doc);
            this.builder = new DocumentBuilder(this.doc);
        } catch (Exception e) {
            System.out.println("初始化失败" + e.toString());
        }

    }
	/**
     * 新建文档
     * @param doc 新建对象
     */
    public WordTable(Document doc) {
        try {
            // 建立DocumentBuilder物件
            this.doc = doc;
            this.builder = new DocumentBuilder(this.doc);
        } catch (Exception e) {
            System.out.println("初始化失败" + e.toString());
        }
    }
    /**
     * 横向纸张
     */
    public void Portarit(){
        builder.getPageSetup().setOrientation(Orientation.LANDSCAPE);
    }
 	/**
     * 新增表格
     */
    public void createTale(List<OrgWordTarget> orgWordTargets,String orgName) throws Exception {
        //水平居中
        builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
        StyleCollection styles= doc.getStyles();
        builder.getFont().setName("微软雅黑");
        builder.getFont().setBold(true);
        builder.getFont().setSize(18);
        builder.writeln("标题");
        builder.getFont().setName("宋体");
        builder.getFont().setSize(12);
        builder.getFont().setBold(false);
        builder.getParagraphFormat().setLineSpacingRule(LineSpacingRule.MULTIPLE);
        //12为一倍行距
        builder.getParagraphFormat().setLineSpacing(18);

        builder.write(orgName+"(盖章):                 ");
        builder.writeln("                                年     月       日   ");
        //创建表格
        Table table = builder.startTable();
        String[] titles = new String[]{"标题1", "标题2", "标题3", "标题4", "标题5", "标题6", "标题7"};
        double[] lens = new double[]{8.8, 18, 14, 15.8, 15.8, 14.6, 12.4};
        builder.getFont().setSize(11);
        builder.getFont().setName("微软雅黑");
        for (int i = 0; i < 7; i++) {
            builder.insertCell();//插入单元格
            //设置宽度注意要在插入单元格后在设置
            builder.getCellFormat().setWidth(lens[i]);
//            builder.getCellFormat().setPreferredWidth(PreferredWidth.fromPercent(lens[i]));//列宽-百分比
            builder.getCellFormat().getShading().setBackgroundPatternColor(Color.LIGHT_GRAY);//背景色-灰色
            builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);//垂直居中对齐
            builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);//水平居中

            builder.write(titles[i]);//写入内容
        }
        builder.endRow();//结束行
        int i=1;
        builder.getFont().setBold(false);
        for (OrgWordTarget o:orgWordTargets) {
            insertCell(i+"");
            builder.getCellFormat().setWidth(lens[0]);
            insertCell(o.getTargetName());
            builder.getCellFormat().setWidth(lens[1]);
            insertCell(o.getDataSource());
            builder.getCellFormat().setWidth(lens[2]);
            insertCell(o.getMethod());
            builder.getCellFormat().setWidth(lens[3]);
            insertCell(o.getExplain());
            builder.getCellFormat().setWidth(lens[4]);
            insertCell(o.getDataUpdateInterval());
            builder.getCellFormat().setWidth(lens[5]);
            insertCell("□ 是  □ 否");
            builder.getCellFormat().setWidth(lens[6]);
            builder.endRow();//结束行
            i++;
        }
        builder.endTable();//结束表格

        builder.getFont().setSize(11);
        builder.getFont().setBold(false);
        builder.getFont().setName("宋体");
        builder.writeln();
        builder.writeln("备注:无");

        builder.getFont().setSize(12);
        builder.writeln("                                                                              联系人:");
        builder.write("                                                                                联系方式:");

        //设置页码
        addHeaderFooter(doc);
}
    /**
     * 插入方法
     * @param value
     */
    public void insertCell(String value){
        builder.insertCell();//插入单元格
        builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);//背景色-白色
//        builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);//对齐-居中
        builder.getParagraphFormat().setAlignment(CellVerticalAlignment.CENTER);//垂直-居中
        if (value==null){
            return;
        }
        builder.write(value);//写入内容
    }
    /**
     * 设置页码
     * @param doc
     * @throws Exception
     */
    public void addHeaderFooter(Document doc) throws Exception {
        //创建页脚 页码
        HeaderFooter footer = new HeaderFooter(doc, HeaderFooterType.FOOTER_PRIMARY);
        doc.getFirstSection().getHeadersFooters().add(footer);

        //页脚段落
        Paragraph footerpara = new Paragraph(doc);
        footerpara.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
        Run footerparaRun = new Run(doc);
        footerparaRun.getFont().setName("宋体");
        footerparaRun.getFont().setSize(9.0);//小5号字体
        footerpara.appendChild(footerparaRun);
        footerpara.appendField(FieldType.FIELD_PAGE, true);//当前页码
        footerpara.appendChild(footerparaRun);
        footer.appendChild(footerpara);
    }
    /**
     * 替换模板中的站位符
     *生成站位符方法 选择插入-->文档部件-->域-->类别选择邮箱合并--->MergeField-->自定义域名
     * @throws Exception
     */
    public void setMap() throws Exception {
         String[] landSupplyA = new String[1];
         String[] landSupplyB = new String[1];
        landSupplyA[0] = "test";
        landSupplyB[0] = "测试一下";

        doc.getMailMerge().execute(landSupplyA, landSupplyB);
    }
}

占位符位置截图:

相关推荐
毕设源码-赖学姐21 小时前
【开题答辩全过程】以 音像租借管理系统为例,包含答辩的问题和答案
java
小宇的天下21 小时前
Calibre 3Dstack --每日一个命令day7【Centers】(3-7)
java·服务器·数据库
用户03048059126321 小时前
Spring Boot 配置文件加载大揭秘:优先级覆盖与互补合并机制详解
java·后端
青莲84321 小时前
Java内存回收机制(GC)完整详解
java·前端·面试
CRUD酱21 小时前
微服务分模块后怎么跨模块访问资源
java·分布式·微服务·中间件·java-ee
gAlAxy...21 小时前
5 种 SpringBoot 项目创建方式
java·spring boot·后端
lalala_lulu21 小时前
什么是事务,事务有什么特性?
java·开发语言·数据库
沛沛老爹21 小时前
深入理解Agent Skills——AI助手的“专业工具箱“实战入门
java·人工智能·交互·rag·企业开发·web转型ai
薛定谔的猫-菜鸟程序员21 小时前
从零到一:用Electron打造专业的Markdown转Word桌面应用。
javascript·electron·word
蓝程序1 天前
Spring AI学习 程序接入大模型(HTTP接入)
java·spring