借助文档控件Aspose.Words,使用 Java 在 Word 文档中创建表格

Microsoft Word 是一种流行的文字处理应用程序,用于创建各种类型的文档。这些文档可能包含多种类型的元素,包括文本、图像、表格和图表。当涉及到用 Java 自动创建和操作文档时,您可能需要一个轻松的解决方案来在 Word 文档中创建表格。因此,在这篇博文中,我们将探讨如何在 Java 应用程序中在 Word 文档中创建表格。

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。

Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

Aspose.words for.net下载   Aspose.words for for java下载

在 Word 文档中创建表格的 Java 库

Aspose.Words for Java是一个 API,允许 Java 开发人员以编程方式处理 Microsoft Word 文档。它提供了用于创建、修改和操作 Word 文档的广泛功能,使其成为自动化文档生成和处理任务的宝贵工具。我们将使用该库将表格插入到 Word 文档中。

您可以下载该库或使用以下 Maven 配置来安装它。

<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository><dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>23.10</version>
<classifier>jdk17</classifier>
</dependency>
使用 Java 在 Word 文档中创建表格

使用 Aspose.Words for Java 在 Word 文档中创建表格有两种方法:

  • 使用文档生成器
  • 使用 DOM(文档对象模型)

您可以选择最适合您要求的方法。那么让我们详细探讨一下这些方法。

使用 DocumentBuilder 创建表

DocumentBuilder类为您提供了一种快速、简单的方法来从头开始创建动态文档或处理现有文档。它提供了一系列用于插入各种内容元素的功能,例如文本、复选框、OLE 对象、段落、列表、表格、图像等。

以下是在Java中使用DocumentBuilder类在Word文档中创建表格的步骤。

  • 创建Document类的对象来加载或创建Word文档。
  • 创建DocumentBuilder类的对象。
  • 使用DocumentBuilder.startTable()方法启动一个表
  • 使用DocumentBuilder.insertCell()方法插入单元格
  • (可选)对单元格应用格式设置,例如字体和对齐方式。
  • 使用DocumentBuilder.write()方法将文本插入单元格。
  • 根据需要重复将单元格和文本插入到单元格中。
  • 使用DocumentBuilder.endRow()方法完成插入单元格时结束一行
  • 使用DocumentBuilder.endTable()方法插入所有行时结束表
  • 使用Document.save()方法保存 Word 文档。

以下代码片段展示了如何使用 Java 在 Word 文档中创建表格。

// Create or load document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);// Create a new table and insert cell.
Table table = builder.startTable();
builder.insertCell();// Table wide formatting must be applied after at least one row is present in the table.
table.setLeftIndent(20.0);// Set height and define the height rule for the header row.
builder.getRowFormat().setHeight(40.0);
builder.getRowFormat().setHeightRule(HeightRule.AT_LEAST);builder.getCellFormat().getShading().setBackgroundPatternColor(new Color((198), (217), (241)));
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setSize(16.0);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);builder.getCellFormat().setWidth(100.0);
builder.write("Header Row,\n Cell 1");// We don't need to specify this cell's width because it's inherited from the previous cell.
builder.insertCell();
builder.write("Header Row,\n Cell 2");builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Header Row,\n Cell 3");
builder.endRow();builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);
builder.getCellFormat().setWidth(100.0);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);// Reset height and define a different height rule for table body.
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();// Reset font formatting.
builder.getFont().setSize(12.0);
builder.getFont().setBold(false);builder.write("Row 1, Cell 1 Content");
builder.insertCell();
builder.write("Row 1, Cell 2 Content");builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 1, Cell 3 Content");
builder.endRow();builder.insertCell();
builder.getCellFormat().setWidth(100.0);
builder.write("Row 2, Cell 1 Content");builder.insertCell();
builder.write("Row 2, Cell 2 Content");builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 2, Cell 3 Content.");
builder.endRow();// End table.
builder.endTable();// Save document.
doc.save("table.docx");

以下是我们使用上面的代码示例创建的表的屏幕截图。

Word 文档中的表格

使用 DOM 创建表

文档对象模型 (DOM)是 Word 文档的内存中表示形式,允许您以编程方式读取、操作和修改 Word 文档的内容和格式。以下步骤演示如何使用 DOM 在 Word 文档中创建表格。

  • 创建Document类的对象来加载或创建Word文档。
  • 创建Table类的对象,并使用Document.getFirstSection().getBody().appendChild(Table)方法将表格插入到文档中。
  • 创建Row类的对象并使用Table.appendChild(Row)方法将其插入表中。
  • 创建Cell类的对象,设置格式选项并向单元格添加文本。
  • 使用Row.appendChild(Cell)方法将单元格插入行中。
  • 对所需数量的行重复此过程。
  • 使用Document.save()方法保存 Word 文档。

以下代码片段展示了如何使用 Java 在 Word 文档中创建表格。

// Create or load document.
Document doc = new Document();// We start by creating the table object. Note that we must pass the document object
// to the constructor of each node. This is because every node we create must belong
// to some document.
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);// Here we could call EnsureMinimum to create the rows and cells for us. This method is used
// to ensure that the specified node is valid. In this case, a valid table should have at least one Row and one cell.// Instead, we will handle creating the row and table ourselves.
// This would be the best way to do this if we were creating a table inside an algorithm.
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);// We can now apply any auto fit settings.
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);Cell cell = new Cell(doc);
cell.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
cell.getCellFormat().setWidth(80.0);
cell.appendChild(new Paragraph(doc));
cell.getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 1 Text"));row.appendChild(cell);// We would then repeat the process for the other cells and rows in the table.
// We can also speed things up by cloning existing cells and rows.
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));// Save document.
doc.save("table.docx");
在 Word 文档中插入嵌套表格

还可能存在这样的情况:您需要创建位于父表单元格内的嵌套表。您无需经过复杂的过程即可做到这一点。首先,创建一个父表,然后调用DocumentBuilder.moveTo(Cell.getFirstParagraph())方法将控件移动到父表的所需单元格内。完成后,以同样的方式创建一个新表。

以下代码片段展示了如何使用 Java 在 Word 文档中创建嵌套表格。

// Create or load document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);// Insert cell.
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");builder.insertCell();
builder.writeln("Outer Table Cell 2");// This call is important to create a nested table within the first table.
// Without this call, the cells inserted below will be appended to the outer table.
builder.endTable();// Move to the first cell of the outer table.
builder.moveTo(cell.getFirstParagraph());// Build the inner table.
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();// Save document.
doc.save("table.docx");

以下是我们上面创建的嵌套表的屏幕截图。

Word 文档中的嵌套表

在 Java 中从 HTML 创建 Word 表

您还可以使用 HTML 字符串在 Word 文档中创建表格,以下是要遵循的步骤。

  • 创建Document类的对象来加载或创建Word文档。
  • 创建DocumentBuilder类的对象。
  • 使用DocumentBuilder.insertHtml(String)方法将表的 HTML 字符串插入到文档中。
  • 最后,使用Document.save()方法保存文档。

下面是从 HTML 字符串生成 Word 表格的代码片段。

// Create or load document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);// Note that AutoFitSettings does not apply to tables inserted from HTML.
builder.insertHtml("<table>"
"<tr>"
"<td>Row 1, Cell 1</td>"
"<td>Row 1, Cell 2</td>"
"</tr>"
"<tr>"
"<td>Row 2, Cell 2</td>"
"<td>Row 2, Cell 2</td>"
"</tr>"
"</table>");// Save document.
doc.save("table.docx");
结论

在这篇博文中,我们探讨了如何使用 Java 在 Word 文档中创建表格。您已经了解了如何使用文档生成器或 DOM 创建表、创建嵌套表以及从 HTML 字符串创建表。通过安装该库并遵循指南,您可以轻松地将表创建功能集成到您的 Java 应用程序中。

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

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

相关文章

Ceph Large omap objects现象及原理分析

Large omap objects现象 以下是真实的问题场景&#xff0c;以此文进行记录并分享。 Q1&#xff1a;集群出现了Large omap objects告警&#xff0c;这是什么问题&#xff1f;有什么影响&#xff1f; Q2&#xff1a;Large omap objects告警的触发条件是什么&#xff1f; Q3&am…

系列十一、(三)Sentinel控制台

一、Sentinel控制台 二、实时监控 2.1、概述 实时监控&#xff0c;顾名思义是用来实时监控的&#xff0c;具体监控的是接口请求通过的QPS和拒绝的QPS&#xff0c;默认情况下没有访问记录&#xff0c;所以看不到任何记录&#xff0c;需要访问接口才会有记录。另外需要注意&…

YOLOv8改进 | 损失篇 | VarifocalLoss密集目标检测专用损失函数 (VFLoss,原论文一比一复现)

一、本文介绍 本文给大家带来的是损失函数改进VFLoss损失函数,VFL是一种为密集目标检测器训练预测IoU-aware Classification Scores(IACS)的损失函数,我经过官方的版本将其集成在我们的YOLOv8的损失函数使用上,其中有很多使用的小细节(否则按照官方的版本使用根本拟合不了…

selenium元素单击不稳定解决方法

selenium自动化测试过程中&#xff0c;经常会发现某一元素单击&#xff0c;很不稳定&#xff0c;有时候执行了点击没有反映。 以下总结两种解决方法&#xff1a;都是通过js注入的方式去点击。 1.F12查一看&#xff0c;要点击的按钮&#xff0c;或连接&#xff0c;有没有οncl…

原生微信小程序AR(扫描指定图片显示glb模型)

效果 ar案例视频 准备&#xff1a;需要准备要扫描的图片地址和扫描成功后显示的模型 1.在components创建组件 index.js文件代码 Component({properties: {title: {type: String,value: ,},intro: {type: String,value: ,},hint: {type: String,value: ,},code: {type: String…

二叉树层次建树

#include <stdio.h> #include <stdlib.h>typedef char BiElemType; typedef struct BiTNode {BiElemType data;struct BiTNode *lChild;struct BiTNode *rChild;//左右节点 } BiTNode, *BiTree; //辅助队列 typedef struct tag {BiTree p;//树的某一个节点&#xf…

Python基础知识总结2——python中的字符串

python字符串 字符串基本特点空字符串和len()函数转义字符字符串拼接字符串复制不换行打印从控制台读取字符串replace() 实现字符串替换str()实现数字转型字符串使用[]提取字符字符串切片slice操作split()分割和join()合并字符串驻留机制和字符串比较字符串比较和同一性成员操作…

如何使用 Python 解决网络抓取中的 reCAPTCHA 问题

在网络抓取的领域&#xff0c;开发人员经常面临 reCAPTCHA 的障碍。为了区分人类和自动化机器人&#xff0c;reCAPTCHA 可能会成为那些试图从网站提取数据的人的沉痛阻碍。然而&#xff0c;借助 Python 和像 Capsolver 这样的工具&#xff0c;可以绕过 reCAPTCHA 并继续抓取有价…

shell 获取主机IP 脚本中使用IP 打印出来IP

目录 查看ip查看网关只查看ens33过滤ip拿到网卡名字对内容进行切片获取第一网卡IP &#xff08;head -1 表示第一个网卡&#xff09;脚本中打印IP 查看ip ip a 查看网关 ip r只查看ens33 ip a show dev ens33过滤ip ip a | grep -oE [0-9]\.[0-9]\.[0-9]\.[0-9] 拿到网卡名…

SQL的联合主键

在SQL中&#xff0c;联合主键是指由多个列组成的主键。联合主键的作用是确保每一行数据的唯一性&#xff0c;即组合列的值必须唯一。可以使用以下语法定义联合主键&#xff1a; CREATE TABLE 表名 (列1 数据类型,列2 数据类型,列3 数据类型,...PRIMARY KEY (列1, 列2, 列3, ..…

扩展 apiserver 连接认证 ip, apiserver证书更新

本文来自我的博客地址 文章目录 问题场景:问题分析:问题解决:查看 apiserver 证书支持的 ip 或 host使用 openssl 生成证书:再次查看 apiserver 证书支持的 ip 或 host 再次尝试将 master 加点加入参考 问题场景: k8s 1.28.1 集群后期新增 vip apiserver 证书不支持 vip 引入…

图像分割实战-系列教程11:U2NET显著性检测实战3

&#x1f341;&#x1f341;&#x1f341;图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 U2NET显著性检测实战1 U2NET显著性检测实战2 U2NET显著性检测实战3 6、上采样操作与REBNCONV def…

JS/JQ实现小程序/H5验证码页面

话不多说&#xff0c;先上效果图 核心代码 1、html/css关键代码 <div class"obtain-verification-code"><div class"obtain-verification-code-input-content"><input id"input-0" class"verification-code-input" m…

Spring Data Jpa 使用EntityManager执行SQL操作数据

使用EntityManager执行原生SQL语句可以通过createNativeQuery方法实现。以下是一个简单的例子&#xff0c;演示如何使用EntityManager执行SQL语句进行数据库操作。 import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.trans…

Java学习笔记(四)——正则表达式

文章目录 正则表达式基本规则字符类(只匹配一个字符)预定义字符(只匹配一个字符)数量词练习正则表达式插件 爬虫利用正则表达式获取想要的内容爬取网络信息练习有条件的爬取贪婪爬取非贪婪爬取正则表达式在字符串中的使用 分组捕获分组正则表达式外部使用非捕获分组正则表达式忽…

MobaXterm SSH 免密登录配置

文章目录 1.简介2.SSH 免密登录配置第一步&#xff1a;点击 Session第二步&#xff1a;选择 SSH第三步&#xff1a;输入服务器地址与用户名第四步&#xff1a;设置会话名称第五步&#xff1a;点击 OK 并输入密码 3.密码管理4.小结参考文献 1.简介 MobaXterm 是一个功能强大的终…

智能座舱的下一个价值“爆点”——让“光”更智能

汽车智能化快速升级&#xff0c;智能座舱作为人机交互的主要窗口&#xff0c;交互模态、用户体验也呈现多维度升级。 例如&#xff0c;今年下半年上市的多款高端智能车型纷纷基于高性能座舱硬件平台&#xff0c;集成了AR-HUD、DMS/OMS等高阶功能&#xff0c;同时结合超大屏/多…

Transformer 的双向编码器表示 (BERT)

一、说明 本文介绍语言句法中&#xff0c;最可能的单词填空在self-attention的表现形式&#xff0c;以及内部原理的介绍。 二、关于本文概述 在我之前的博客中&#xff0c;我们研究了关于生成式预训练 Transformer 的完整概述&#xff0c;关于生成式预训练 Transformer (GPT) 的…

VMware ESXI 8 安装ipmitool 调整戴尔服务器风扇转速

本文内容适合ESXI 8版本安装ipmitool &#xff0c;进行管理&#xff0c;已知的是8.0以上版本无法安装社区的vib.所以需要自己编译文件&#xff0c;7.0及之前的版本可以安装vib版本的ipmtools。 一、编译好的适用于esxi8的ipmitool下载 ipmitool下载 二、安装ipmitool 1、开…

基于spark的Hive2Pg数据同步组件

一、背景 Hive中的数据需要同步到pg供在线使用&#xff0c;通常sqoop具有数据同步的功能&#xff0c;但是sqoop具有一定的问题&#xff0c;比如对数据的切分碰到数据字段存在异常的情况下&#xff0c;数据字段的空值率高、数据字段重复太多&#xff0c;影响sqoop的分区策略&…