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

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

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

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

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

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

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

//获取Aspose授权
WordLib.setUnlimitedLicense();

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

    @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();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/484918.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仿蝠鲼软体机器人实现高速多模态游动

近期,华南理工大学周奕彤老师研究团队最新成果"Manta Ray-Inspired Soft Robotic Swimmer for High-speed and Multi-modal Swimming"被机器人领域会议 IEEE/RSJ International Conference on Intelligent Robots and Systems(IROS 2024&#…

【网络原理】网络地址转换----NAT技术详解

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 我们在 IP协议 一文中介绍过,由于IPv4协议中 IP地址只有32位,导致最多只能表示 42亿9千万个IP地址。但我们需要通过IP地址来标识网络上的每一个设备&#x…

D86【python 接口自动化学习】- pytest基础用法

day86 pytest配置testpaths 学习日期:20241202 学习目标:pytest基础用法 -- pytest配置testpaths 学习笔记: pytest配置项 主目录创建pytest.ini文件 [pytest] testpaths./testRule 然后Terminal里直接命令:pytest&#xff…

电机瞬态分析基础(15):电机的电磁转矩(三相同步电机和三相感应电机)

1. 三相同步电机电磁转矩 1.1 隐极同步电机 图1. 三相隐极同步电机基本结构 三相隐极同步电机的基本结构可用图1来简单表示,图中,定子分布绕组可等效为三相对称绕组A-X、B-Y和C-Z;转子分布绕组为励磁绕组。若在定子三相对称绕组中通入三相…

人工智能与机器学习在智能扭矩系统中的应用

【大家好,我是唐Sun,唐Sun的唐,唐Sun的Sun。】 在当今科技飞速发展的时代,智能扭矩系统正经历着一场深刻的变革,而人工智能(AI)和机器学习算法的应用成为了推动这一变革的关键力量。 传统的扭矩…

Android hid 数据传输(device 端 )

最近一直在处理hid 数据需求,简而言之就是两台设备直接可以通过usb 线互相传递数据。 项目架构 为什么Device 端要采用HID(人机接口设备)的方式发送和接收数据呢? 主要是速度快,举个例子,就是鼠标移动&am…

K8S离线部署Nacos集群【Oracle作外部数据源】

一、前言 由于公司的要求下要使Nacos集群以Oracle作为外部数据源,前期咱们已经阐述了如何在本地搭建(Nacos集群搭建【Oracle作外部数据源】),本次将带领大家在k8s上部署Nacos集群并以Oracle作为外部数据源。 二、软件包 nacos-f…

【Java开发】Springboot集成mybatis-plus

1、引入 mybatis-plus 依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.0</version> </dependency> <!--mysql依赖--> <dependen…

技术成长战略是什么?

文章目录 技术成长战略是什么&#xff1f;1. 前言2. 跟技术大牛学成长战略2.1 系统性能专家案例2.2 从开源到企业案例2.3 技术媒体大V案例2.4 案例小结 3. 学习金字塔和刻意训练4. 战略思维的诞生5. 建议 技术成长战略是什么&#xff1f; 1. 前言 在波波的微信技术交流群里头…

【开源免费】基于Vue和SpringBoot的课程答疑系统(附论文)

博主说明&#xff1a;本文项目编号 T 070 &#xff0c;文末自助获取源码 \color{red}{T070&#xff0c;文末自助获取源码} T070&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

【二分查找】力扣 275. H 指数 II

一、题目 二、思路 h 指数是高引用引用次数&#xff0c;而 citations 数组中存储的就是不同论文被引用的次数&#xff0c;并且是按照升序排列的。也就是说 h 指数将整个 citations 数组分成了两部分&#xff0c;左半部分是不够引用 h 次 的论文&#xff0c;右半部分论文的引用…

【LeetCode】169.多数元素

题目连接&#xff1a; https://leetcode.cn/problems/majority-element/solutions/2362000/169-duo-shu-yuan-su-mo-er-tou-piao-qing-ledrh/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述&#xff1a; 思路一&#xff1a; 使用哈希表unordered_map记录每个元…

SpringBoot整合knife4j,以及会遇到的一些bug

这篇文章主要讲解了“Spring Boot集成接口管理工具Knife4j怎么用”&#xff0c;文中的讲解内容简单清晰&#xff0c;易于学习与理解&#xff0c;下面请大家跟着小编的思路慢慢深入&#xff0c;一起来研究和学习“Spring Boot集成接口管理工具Knife4j怎么用”吧&#xff01; 一…

️️耗时一周,肝了一个超丝滑的卡盒小程序

前言 先看看成品效果&#xff1a; 在上个月&#xff0c;我出于提升自己的英语造句能力的目的&#xff0c;想要找一个阅读或者练习造句类的英语学习 APP&#xff0c;但是最终找了几个 APP 不是不太好用就是要付费。于是我转换思路&#xff0c;找到了一本书&#xff0c;叫《36…

aardio - 汉字笔顺处理 - json转sqlite转png

本代码需要最新版 godking.conn 库&#xff0c;请自行下载&#xff01; 如果没有安装 odbc for sqlite 驱动&#xff0c;可以使用 godking.conn.driver.sqlite3.install() 安装。 也可以在此下载自行安装&#xff1a;http://www.chengxu.online/show.asp?softid267 1、将js…

Pick:一款安全易用的密码管理器

Pick&#xff1a;一款安全易用的密码管理器 pick A secure and easy-to-use CLI password manager for macOS and Linux 项目地址: https://gitcode.com/gh_mirrors/pick/pick 在当今数字化时代&#xff0c;密码管理已成为每个人不可或缺的一部分。为了保护您的在线账户…

C/C++当中的内存对齐

一&#xff1a;为什么要存在内存对齐 对与计算机而言&#xff0c;一次性可以取出处理的单元大小为字&#xff0c;在32位系统下&#xff0c;一次性可以取出4个字节&#xff0c;而在64位系统下&#xff0c;一次性可以取出8个字节&#xff0c;而一个地址对应一个内存单元&#xff…

Elasticsearch ILM 故障排除:常见问题及修复

作者&#xff1a;来自 Elastic Stef Nestor 大家好&#xff01;我们的 Elasticsearch 团队正在不断改进我们的索引生命周期管理 (index Lifecycle Management - ILM) 功能。当我第一次加入 Elastic Support 时&#xff0c;我通过我们的使用 ILM 实现自动滚动教程快速上手。在帮…

VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

C# 命名空间(Namespace)

文章目录 前言一、命名空间的定义与使用基础&#xff08;一&#xff09;定义语法与规则&#xff08;二&#xff09;调用命名空间内元素 二、using 关键字三、嵌套命名空间 前言 命名空间&#xff08;Namespace&#xff09;在于提供一种清晰、高效的方式&#xff0c;将一组名称与…