借助文档控件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 应用程序中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作系统课程设计:常用页面置换算法(OPT、FIFO、LRU)的实现及缺页率的计算(C语言)

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#xff09; 目录 一、效果图二、代码&#xff08;带注释&#xff09;三、说明 一、效果图 二、代码&#xff08;带…

@RequestParam

在我们写接口的时候&#xff0c;经常会用到这个注解来标记参数&#xff0c;通过这个注解我们可以把请求的url中的参数名和值映射到被标记的参数上。 比如下方&#xff0c;这个接口是通过传入的参数来查询相关信息的 我们定义这样一个接口&#xff0c;设置了8个参数&#xff0c;…

接口测试工具:Postman的高级用法

Postman 是一款功能强大的 API 开发和测试工具&#xff0c;以下是一些高级用法的详细介绍和操作步骤。【文末有配套视频教程和免费的资料文档领取】 一、环境和全局变量 环境变量允许你设置特定于环境&#xff08;如开发、测试、生产&#xff09;的变量&#xff0c;全局变量则…

C++ Primer 6.1 函数基础

函数的形参列表 int func(int v,int v2) {int v,v2;//&#xff01;错误 } 函数返回类型 不能是数组和函数&#xff08;两者都不接受对拷&#xff09;&#xff0c;但可以是指针 局部对象 形参和函数体内部的变量称为局部变量&#xff0c;仅在函数内部可见&#xff0c;隐藏外部…

四川天蝶电子商务有限公司助力商家飞向电商蓝海

随着互联网的飞速发展&#xff0c;电商行业已经成为一个不可忽视的经济增长点。在这个大背景下&#xff0c;四川天蝶电子商务有限公司凭借其独特的抖音电商服务&#xff0c;迅速崭露头角&#xff0c;成为了众多商家在电商领域的得力助手。今天&#xff0c;我们将深入了解这家公…

关于markdown文件插入图片变成相对路径

两种方式 第一种方式 ![](绝对路径)变成下面这种相对路径 也就是说每次插入的时候&#xff0c;都得修改一下。 第二种方式 在Typora中&#xff0c;文件——偏好设置——图像——优先选择相对路径 这样问题就解决了。 如果想了解更多的方式&#xff0c;附上链接。 Typora…

Groove闭包

Groovy闭包 - 简书# 闭包 闭包的基础知识 闭包的使用 闭包 this,owner,delegate 的理解 总结 ## 闭包的基础知识 闭包就是一段可以使用参数的代码片段&#xff0c;每个闭包会被编译成...https://www.jianshu.com/p/c73b03cdf986

Android中两种选择联系人方式

1.在选择联系人方式网上也有很多案例 有的说是使用ContactsContract.CommonDataKinds.Phone.CONTENT_URI也有的说是使用ContactsContract.Contacts.CONTENT_URI其实这两种方式都可以使用 只不过ContactsContract.Contacts.CONTENT_URI这种方式需要多查询一遍 一、使用Contacts…

矿山无人驾驶方案

矿山无人驾驶运输系统&#xff0c;可实现露天矿采煤装载运输的无人化&#xff0c;满足智能矿山安全、高效、绿色、环保等目标。 无人驾驶应用的总体技术架构包括“车端、场端、云端”三个层面以及相应的安全保障体系&#xff0c;其中车端的智能矿卡具备车辆感知、通信、决策和执…

[NOIP2006 提高组] 作业调度方案(修改)

题目&#xff1a; 这里对于之前的题目进行修改记录。果然还是受不了等待&#xff0c;利用晚饭时间又看了这个题目。于是发现了问题。 之前的博客&#xff1a;https://blog.csdn.net/KLSZM/article/details/135522867?spm1001.2014.3001.5501 问题修改描述 上午书写的代码中是…

Mongodb Replica Sets 副本集群搭建

Replica Sets 复制集搭建 MongoDB 有三种集群架构模式&#xff0c;分别为主从复制&#xff08;Master-Slaver&#xff09;、副本集&#xff08;Replica Set&#xff09;和分片&#xff08;Sharding&#xff09;模式。 Master-Slaver 是一种主从复制的模式&#xff0c;目前已经…

Spring MVC 的RequestMapping注解

RequestMapping注解 使用说明 作用&#xff1a;用于建立请求URL和处理请求方法之间的对应关系。 出现位置&#xff1a; 类上&#xff1a; 请求 URL的第一级访问目录。此处不写的话&#xff0c;就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以…

解决:TypeError: ‘dict_keys’ object does not support indexing

解决&#xff1a;TypeError: ‘dict_keys’ object does not support indexing 文章目录 解决&#xff1a;TypeError: dict_keys object does not support indexing背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff1a;方法二&#xff1a;方法三&#xff1a;今…

CES2024:智能戒指、全息技术、AI家居机器人等有趣的小工具

在CES2024的展会上上&#xff0c;我们见证了一系列充满创意和未来感的科技产品。从智能戒指到全息技术&#xff0c;再到AI家居机器人&#xff0c;这些有趣的小工具不仅展现了技术的进步&#xff0c;更预示着未来生活的可能性。现在就来给大家介绍九个实用有趣的小工具。 1、华…

单因素方差分析--R

任务说明 三个剂量水平的药物处理受试者&#xff0c;每个剂量水平十个受试者&#xff0c;现在收集到数据后&#xff0c;问&#xff1a; 药物剂量水平显著影响受试者的response&#xff1f; 或者不同剂量药物处理受试者有显著效果的差异吗&#xff1f; 数据 library(tidyvers…

stable diffusion代码学习笔记

前言&#xff1a;本文没有太多公式推理&#xff0c;只有一些简单的公式&#xff0c;以及公式和代码的对应关系。本文仅做个人学习笔记&#xff0c;如有理解错误的地方&#xff0c;请指出。 资源 本文学习的代码&#xff1b;相关文献&#xff1a; Denoising Diffusion Probab…

Linux学习之网络编程1(纯理论)

写在前面 刚刚更新完Linux系统编程&#xff0c;特别推荐大家去看的Linux系统编程&#xff0c;总共44个小时&#xff0c;老师讲的非常好&#xff0c;我是十天肝完的&#xff0c;每天大概看20集&#xff0c;每天还要以写blog的形式来写笔记来总结一下&#xff0c;虽然这十天有点…

ubuntu18.04 TensorRT 部署 yolov5-7.0推理

文章目录 1、环境配置2、推理部分2.1、检测2.2、分类2.3、分割2.4、INT8 量化 1、环境配置 链接: TensorRT cuda环境安装 2、推理部分 下载yolov5对应版本的包 https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5 2.1、检测 1、源码模型下载 git clone -b v7.0 …

Python—使用LangCahin调用千帆大模型

文章目录 前言一、安装LangChain二、获取千帆API Key、Secret Key三、简单对话案例实现四、构建语言模型应用程序:LLM1.初始化模型2.LLM初始化和调用 五、提示词模板&#xff08;PromptTemplate&#xff09;: 管理 LLM 的提示1.定义提示模板2.组合 LLM 和提示词3.组合输出解析器…

浮动差价这么受欢迎Anzo Capital找了1个理由

在交易市场中&#xff0c;浮动差价是如今最常见的差价类型&#xff0c;也是最受欢迎的的差价类型。Anzo Capital认为它受欢迎的理由只有一条&#xff0c;那就是因为它对参与交易的各方都有利可图。 不仅是交易者本身&#xff0c;就连经纪人和交易商这三者都可以同时受益&…