java操作doc(二)——java利用Aspose.Words动态创建自定义doc文档

有关java动态操作word文档,上一篇写了如何使用模板动态设置对于内容以及相关单元格的动态合并问题,详细请参看如下文档:

java利用Aspose.Words操作Word动态模板文档并动态设置单元格合并

这篇文档说说,如何利用Aspose.Words动态创建自定义doc文档,和使用office工具编写doc文档是一个思路,详细请认真阅读。

一、创建案例以及文档创建授权

例如要创建如下案例的文档信息:

需要先获取相关授权信息,关键代码如下,详细请参考java操作doc(一)

java 复制代码
//获取Aspose授权
WordLib.setUnlimitedLicense();

二、doc文档动态自定义创建

java 复制代码
    @PostMapping("/test/{proNo}")
    @ApiOperation("测试使用Aspose创建自定义doc文档")
    public void testAsposeWordsCreateDoc(@PathVariable("proNo") String proNo,
                                         HttpServletResponse response){
        //获取Aspose授权
        WordLib.setUnlimitedLicense();
        try {
            //创建文档
            Document doc = new Document();
            DocumentBuilder docBuild = new DocumentBuilder(doc);
            //创建文档标题样式
            Font font = docBuild.getFont();
            font.setName("宋体");
            font.setSize(16);
            docBuild.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
            docBuild.writeln("Aspose动态创建自定义doc文档");
            //换行
            docBuild.insertBreak(BreakType.PARAGRAPH_BREAK);

            //创建正文信息
            docBuild.getFont().setSize(12);
            docBuild.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
            docBuild.writeln("编号:" + proNo);
            docBuild.getFont().clearFormatting();

            //设置表格填充颜色
            Color color = new Color(224, 223, 223);

            // 创建一个表格并设置整体样式
            docBuild.startTable();
            //创建新的一行
            docBuild.insertCell();
            docBuild.getCellFormat().setWidth(200);
            docBuild.getRowFormat().setHeight(50);
            docBuild.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
            docBuild.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);
            //设置表格内容
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(color);
            docBuild.write("Aspose项目");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(Color.white);
            docBuild.write("Aspose");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(color);
            docBuild.write("操作人");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(Color.white);
            docBuild.write("key");
            //结束当前行
            docBuild.endRow();

            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(color);
            docBuild.write("项目负责人");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(Color.white);
            docBuild.write("Aspose.Words");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(color);
            docBuild.write("测试日期");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(Color.white);
            docBuild.write(DateUtil.daFormat(new Date()));
            docBuild.endRow();

            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(color);
            docBuild.write("测试等级");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(Color.white);
            docBuild.write("□ A   □ B   ☑ C");
            docBuild.insertCell();
            docBuild.write("阶段");
            docBuild.insertCell();
            docBuild.write("test阶段");
            docBuild.endRow();

            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(color);
            docBuild.write("测试过程");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(Color.white);
            docBuild.write("使用Aspose创建自定义doc文档");
            docBuild.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
            docBuild.insertCell();
            docBuild.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
            docBuild.insertCell();
            docBuild.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
            docBuild.endRow();

            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(color);
            docBuild.write("最终结果描述");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(Color.white);
            docBuild.write("全部合格,整体测试通过");
            docBuild.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
            docBuild.insertCell();
            docBuild.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
            docBuild.insertCell();
            docBuild.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
            docBuild.endRow();


            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(color);
            docBuild.write("经验教训");
            docBuild.insertCell();
            docBuild.getCellFormat().getShading().setBackgroundPatternColor(Color.white);
            docBuild.write("时间是检验真理的唯一标准");
            docBuild.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
            docBuild.insertCell();
            docBuild.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
            docBuild.insertCell();
            docBuild.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
            docBuild.endRow();
            docBuild.endTable();

            // 保存文档
            doc.updateFields();
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
            doc.save(outStream, SaveFormat.DOCX);
            // 建立一个文件的输出的输出流
            ByteArrayOutputStream byteArrayOutputStream = (ByteArrayOutputStream) outStream;
            byte[] aByte = byteArrayOutputStream.toByteArray();

            // 设置响应头信息
            response.setCharacterEncoding("UTF-8");
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment; filename=\"" + proNo+".docx" + "\"");
            String returnType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
            response.setContentType(returnType);
            OutputStream responseOutputStream = response.getOutputStream();
            responseOutputStream.write(aByte);
            responseOutputStream.flush();

        } catch (Exception e) {
            System.out.println("使用Aspose动态创建自定义doc文档异常,编号:" + proNo);
            e.printStackTrace();
        }
    }
相关推荐
java排坑日记1 小时前
poi-tl+kkviewfile实现生成pdf业务报告
java·pdf·word
V+zmm101341 小时前
校园约拍微信小程序设计与实现ssm+论文源码调试讲解
java·微信小程序·小程序·毕业设计·ssm
猿来入此小猿1 小时前
基于SpringBoot小说平台系统功能实现四
java·spring boot·毕业设计·毕业源码·在线小说阅读·在线小说平台·免费学习:猿来入此
Cosmoshhhyyy2 小时前
LeetCode:2274. 不含特殊楼层的最大连续楼层数(排序 Java)
java·算法·leetcode
Dolphin_Home3 小时前
Spring Boot 多环境配置与切换
java·spring boot·后端
我本是机械人3 小时前
MVCC实现原理及其作用
java·数据结构·数据库·后端·mysql·算法
路在脚下@3 小时前
SpringMVC的消息转换器
java·spring boot
sin22013 小时前
springmvc--请求参数的绑定
java·mvc
装不满的克莱因瓶3 小时前
【Redis经典面试题十】热key与大key的问题如何解决?
java·数据库·redis·缓存·面试·面试题·key
武昌库里写JAVA3 小时前
Redis奇幻之旅(四)4. Redis Cluster
java·开发语言·spring boot·学习·课程设计