在 word 文档中,内容控件是一种特殊的元素,可用于添加交互性和动态内容, 使文档更具交互性和功能性。通过内容控件,用户可以轻松地插入、删除或修改特定部分的内容,而无需改变文档的整体结构, 这样可以更轻松地创建各种类型的文档,提高效率。本文将介绍如何使用 spire.doc for java 在 java 项目中修改 word 文档中的内容控件。
安装 spire.doc for java
首先,您需要在 java 程序中添加 spire.doc.jar 文件作为依赖项。您可以从这个链接下载 jar 文件;如果您使用 maven,则可以通过在 pom.xml 文件中添加以下代码导入 jar 文件。
com.e-iceblue
e-iceblue
https://repo.e-iceblue.cn/repository/maven-public/
e-iceblue
spire.doc
12.4.14
java 修改正文内容控件
在 spire.doc 中,要修改正文内容控件,需要操作 structuredocumenttag 对象类型。通过遍历 section.getbody() 中的子对象集合,找到类型为 structuredocumenttag 的对象,然后进行相应的更改。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.loadfromfile() 方法加载一个文档。
- 使用 section.getbody() 获取文档一个节的正文部分。
- 遍历正文部分的子对象集合 body.getchildobjects(),获取到类型为 structuredocumenttag 的子对象。
- 进入 structuredocumenttag.getchildobjects() 子对象集合,根据子对象的类型执行相应的修改操作。
- 使用 document.savetofile() 方法保存到文档。
- java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import java.util.*;
public class modifycontentcontrolinbody {
public static void main(string[] args) {
// 创建一个新的文档对象
document doc = new document();
// 从文件加载文档内容
doc.loadfromfile("示例1.docx");
// 获取文档正文部分
body body = doc.getsections().get(0).getbody();
// 创建段落列表和表格列表
list paragraphs =new arraylist<>();
listtables = new arraylist<>();
for (int i = 0; i < body.getchildobjects().getcount(); i ) {
// 获取文档对象
documentobject documentobject = body.getchildobjects().get(i);
// 如果是structuredocumenttag对象
if (documentobject instanceof structuredocumenttag) {
structuredocumenttag structuredocumenttag = (structuredocumenttag)documentobject;
// 如果标签为"c1"或者别名为"c1"
if (structuredocumenttag.getsdtproperties().gettag().equals("c1") || structuredocumenttag.getsdtproperties().getalias().equals("c1")) {
for (int j = 0; j < structuredocumenttag.getchildobjects().getcount(); j ) {
// 如果是段落对象
if (structuredocumenttag.getchildobjects().get(j) instanceof paragraph) {
paragraph paragraph = (paragraph)structuredocumenttag.getchildobjects().get(j);
paragraphs.add(paragraph);
}
// 如果是表格对象
if (structuredocumenttag.getchildobjects().get(j) instanceof table) {
table table = (table)structuredocumenttag.getchildobjects().get(j);
tables.add(table);
}
}
}
}
}
// 修改第一个段落的文本内容
paragraphs.get(0).settext("成都冰蓝科技有限公司致力于为开发人员提供 java 组件开发产品。");
// 重置第一个表格的单元格为5行4列
tables.get(0).resetcells(5, 4);
// 将修改后的文档保存到文件
doc.savetofile("修改word文档正文中的内容控件.docx", fileformat.docx_2016);
// 关闭文档及释放文档资源
doc.close();
doc.dispose();
}
}java 修改段落中的内容控件
在 spire.doc 中,要修改段落中的内容控件,需要使用对象类型为 structuredocumenttaginline。具体操作是遍历段落的子对象集合,找到类型为 structuredocumenttaginline 的对象,然后对其进行相应的修改。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.loadfromfile()方法加载一个文档。
- 使用 section.getbody() 获取文档一个节的正文部分。
- 使用 body.getparagraphs().get(0) 获取正文部分的第一个段落。
- 遍历段落的子对象集合 paragraph.getchildobjects(),获取到类型为 structuredocumenttaginline 的子对象。
- 进入 structuredocumenttaginline.getchildobjects() 子对象集合,根据子对象的类型执行相应的修改操作。
- 使用 document.savetofile() 方法保存到文档。
- java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
public class modifycontentcontrolinparagraph {
public static void main(string[] args) {
// 创建一个新的document对象
document doc = new document();
// 从文件加载文档内容
doc.loadfromfile("示例2.docx");
// 获取文档的主体部分
body body = doc.getsections().get(0).getbody();
// 获取主体部分的第一个段落
paragraph paragraph = body.getparagraphs().get(0);
// 遍历段落中的子对象
for (int i = 0; i < paragraph.getchildobjects().getcount(); i ) {
// 检查子对象是否为structuredocumenttaginline类型
if (paragraph.getchildobjects().get(i) instanceof structuredocumenttaginline) {
// 将子对象转换为structuredocumenttaginline类型
structuredocumenttaginline structuredocumenttaginline = (structuredocumenttaginline)paragraph.getchildobjects().get(i);
// 检查文档标记的tag或alias属性是否为"text1"
if (structuredocumenttaginline.getsdtproperties().gettag().equals("text1") || structuredocumenttaginline.getsdtproperties().getalias().equals("text1")) {
// 遍历structuredocumenttaginline对象里的子对象
for (int j = 0; j < structuredocumenttaginline.getchildobjects().getcount(); j ) {
// 检查子对象是否为textrange对象
if (structuredocumenttaginline.getchildobjects().get(j) instanceof textrange) {
// 将子对象转换为textrange类型
textrange range = (textrange)structuredocumenttaginline.getchildobjects().get(j);
// 设置文本内容为指定内容
range.settext("word97-2003、word2007、word2010、word2013、word2016以及word2019");
}
}
}
// 检查文档标记的tag或alias属性是否为"logo1"
if (structuredocumenttaginline.getsdtproperties().gettag().equals("logo1") || structuredocumenttaginline.getsdtproperties().getalias().equals("logo1")) {
// 遍历structuredocumenttaginline对象里的子对象
for (int j = 0; j < structuredocumenttaginline.getchildobjects().getcount(); j ) {
// 检查子对象是否为图片
if (structuredocumenttaginline.getchildobjects().get(j) instanceof docpicture) {
// 将子对象转换为docpicture类型
docpicture docpicture = (docpicture)structuredocumenttaginline.getchildobjects().get(j);
// 加载指定图片
docpicture.loadimage("doc-java.png");
// 设置图片宽度和高度
docpicture.setwidth(100);
docpicture.setheight(100);
}
}
}
}
}
// 将修改后的文档保存为新的文件
doc.savetofile("修改word文档的段落中的内容控件.docx", fileformat.docx_2016);
// 关闭文档及释放文档资源
doc.close();
doc.dispose();
}
}
java 修改表格行内容控件
在 spire.doc 中,要修改表格行内容控件,需要遍历表格的子对象集合,找到类型为 structuredocumenttagrow 的对象,然后进行相应的更改。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.loadfromfile() 方法加载一个文档。
- 使用 section.getbody() 获取文档一个节的正文部分。
- 使用 body.gettables().get(0) 获取正文部分的第一个表格。
- 遍历表格的子对象集合 table.getchildobjects(),获取到类型为 structuredocumenttagrow 的子对象。
- 进入 structuredocumenttagrow.getcells() 表格行内容控件的单元格集合,然后对单元格内容执行相应的修改操作。
- 使用 document.savetofile() 方法保存到文档。
- java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.awt.*;
public class modifytextcontentcontrolintablerow {
public static void main(string[] args) {
// 创建一个新的文档对象
document doc = new document();
// 从文件加载文档
doc.loadfromfile("示例3.docx");
// 获取文档正文部分
body body = doc.getsections().get(0).getbody();
// 获取第一个表格
table table = body.gettables().get(0);
// 遍历表格中的子对象
for (int i = 0; i < table.getchildobjects().getcount(); i ) {
// 判断子对象是否为structuredocumenttagrow类型
if (table.getchildobjects().get(i) instanceof structuredocumenttagrow) {
// 将子对象转换为structuredocumenttagrow对象
structuredocumenttagrow structuredocumenttagrow = (structuredocumenttagrow)table.getchildobjects().get(i);
// 检查structuredocumenttagrow的tag或alias属性是否为"row1"
if (structuredocumenttagrow.getsdtproperties().gettag().equals("row1") || structuredocumenttagrow.getsdtproperties().getalias().equals("row1")) {
// 清空单元格中的段落
structuredocumenttagrow.getcells().get(0).getparagraphs().clear();
// 在单元格中添加一个段落,并设置文本
textrange textrange = structuredocumenttagrow.getcells().get(0).addparagraph().appendtext("艺术");
textrange.getcharacterformat().settextcolor(color.blue);
}
}
}
// 将修改后的文档保存到文件
doc.savetofile("修改表格行内容控件.docx", fileformat.docx_2016);
// 关闭文档及释放文档资源
doc.close();
doc.dispose();
}
}
java 修改表格单元格内容控件
在 spire.doc 中,要对表格单元格的内容控件对象进行操作,需要使用名为 structuredocumenttagcell 的特定类型的对象。这可以通过检查 tablerow.getchildobjects() 中的子对象集合,找到类型为 structuredocumenttagcell 的对象,然后执行相应的操作。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.loadfromfile() 方法加载一个文档。
- 使用 section.getbody() 获取文档一个节的正文部分。
- 使用 body.gettables().get(0) 获取正文部分的第一个表格。
- 遍历表格行集合 table.getrows(),进入每一个 tablerow 对象。
- 遍历表格行的子对象集合 tablerow.getchildobjects(),获取到类型为 structuredocumenttagcell 的子对象。
- 进入 structuredocumenttagcell.getparagraphs() 表格单元格内容控件的段落集合,然后对内容执行相应的修改操作。
- 使用 document.savetofile() 方法保存到文档。
- java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.awt.*;
public class modifytextcontentcontrolintablecell {
public static void main(string[] args) {
// 创建一个新的文档对象
document doc = new document();
// 从文件加载文档
doc.loadfromfile("示例4.docx");
// 获取文档的正文部分
body body = doc.getsections().get(0).getbody();
// 获取文档中的第一个表格
table table = body.gettables().get(0);
// 遍历表格的行
for (int i = 0; i < table.getrows().getcount(); i ) {
// 遍历每行中的子对象
for (int j = 0; j < table.getrows().get(i).getchildobjects().getcount(); j ) {
// 检查该子对象是否为structuredocumenttagcell
if (table.getrows().get(i).getchildobjects().get(j) instanceof structuredocumenttagcell)
{
// 将子对象转换为structuredocumenttagcell类型
structuredocumenttagcell structuredocumenttagcell = (structuredocumenttagcell)table.getrows().get(i).getchildobjects().get(j);
// 检查structuredocumenttagcell的tag或alias属性是否为"cell1"
if (structuredocumenttagcell.getsdtproperties().gettag().equals("cell1") || structuredocumenttagcell.getsdtproperties().getalias().equals("cell1")) {
// 清空单元格中的段落
structuredocumenttagcell.getparagraphs().clear();
// 添加一个新段落,并在其中添加文本
textrange textrange = structuredocumenttagcell.addparagraph().appendtext("92");
textrange.getcharacterformat().settextcolor(color.blue);
}
}
}
}
// 将修改后的文档保存为新的文件
doc.savetofile("修改表格单元格内容控件.docx", fileformat.docx_2016);
// 关闭文档及释放文档资源
doc.close();
doc.dispose();
}
}
java 修改表格单元格中的内容控件
这个案例演示了如何修改表格单元格中段落的内容控件。首先要访问单元格中的段落集合 tablecell.getparagraphs(),然后遍历每个段落对象的子对象集合 paragraph.getchildobjects(),在其中查找类型为 structuredocumenttaginline 的对象,最后对其进行修改。以下是详细的步骤:
- 创建一个 document 对象。
- 使用 document.loadfromfile() 方法加载一个文档。
- 使用 section.getbody() 获取文档一个节的正文部分。
- 使用 body.gettables().get(0) 获取正文部分的第一个表格。
- 遍历表格行集合 table.getrows(),进入每一个 tablerow 对象。
- 遍历单元格集合 tablerow.getcells(),进入每一个 tablecell 对象。
- 遍历单元格里的段落集合 tablecell.getparagraphs(),进入每一个 paragraph 对象。
- 遍历段落的子对象集合 paragraph.getchildobjects(),查找到类型为 structuredocumenttaginline 的对象。
- 进入 structuredocumenttaginline.getchildobjects() 子对象集合,根据子对象的类型执行相应的修改操作。
- 使用 document.savetofile() 方法保存到文档。
- java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.textrange;
import java.awt.*;
public class modifytextcontentcontrolinparagraphoftablecell {
public static void main(string[] args) {
// 创建一个新的document对象
document doc = new document();
// 从文件加载文档内容
doc.loadfromfile("示例5.docx");
// 获取文档正文部分
body body = doc.getsections().get(0).getbody();
// 获取第一个表格
table table = body.gettables().get(0);
// 遍历表格的行
for (int r = 0; r < table.getrows().getcount(); r ) {
// 遍历表格行中的单元格
for (int c = 0; c < table.getrows().get(r).getcells().getcount(); c ) {
// 遍历单元格中的段落
for (int p = 0; p < table.getrows().get(r).getcells().get(c).getparagraphs().getcount(); p ) {
// 获取段落对象
paragraph paragraph = table.getrows().get(r).getcells().get(c).getparagraphs().get(p);
// 遍历段落中的子对象
for (int i = 0; i < paragraph.getchildobjects().getcount(); i ) {
// 判断子对象是否为structuredocumenttaginline类型
if (paragraph.getchildobjects().get(i) instanceof structuredocumenttaginline) {
// 转换为structuredocumenttaginline对象
structuredocumenttaginline structuredocumenttaginline = (structuredocumenttaginline)paragraph.getchildobjects().get(i);
// 检查structuredocumenttaginline的tag或alias属性是否为"test1"
if (structuredocumenttaginline.getsdtproperties().gettag().equals("test1") || structuredocumenttaginline.getsdtproperties().getalias().equals("test1") ) {
// 遍历structuredocumenttaginline的子对象
for (int j = 0; j < structuredocumenttaginline.getchildobjects().getcount(); j ) {
// 判断子对象是否为textrange类型
if (structuredocumenttaginline.getchildobjects().get(j) instanceof textrange) {
// 转换为textrange对象
textrange textrange = (textrange)structuredocumenttaginline.getchildobjects().get(j);
// 设置文本内容
textrange.settext("89");
//设置文本颜色
textrange.getcharacterformat().settextcolor(color.blue);
}
}
}
}
}
}
}
}
// 将修改后的文档保存为新文件
doc.savetofile("修改表格单元格的段落中的文本内容控件.docx", fileformat.docx_2016);
// 关闭文档及释放文档资源
doc.close();
doc.dispose();
}
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。