Java 读取Word文本框中的文本、图片和表格

Word可插入文本框,文本框中可嵌入文本、图片、表格等内容。对文档中的已有文本框,也可以读取其中的内容。本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本、图片以及表格等。

【程序环境】

程序编辑环境为IntelliJ IDEA,并在程序中引入了free Spire.Doc.jar,安装的Jdk版本为1.8.0。

【源文档】

程序中用于测试的Word源文档如下图:


【程序代码】

1.读取文本框中的文本

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.TextBox;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class ExtractText {
    public static void main(String[] args) throws IOException {
        //加载含有文本框的Word文档
        Document doc = new Document();
        doc.loadFromFile("sample.docx");

//获取文本框
        TextBox textbox = doc.getTextBoxes().get(0);

//保存文本框中的文本到指定文件
        File file = new File("ExtractedText.txt");
        if (file.exists())
        {
            file.delete();
        }
        file.createNewFile();
        FileWriter fw = new FileWriter(file, true);
        BufferedWriter bw = new BufferedWriter(fw);

//遍历文本框中的对象
        for (Object object:textbox.getBody().getChildObjects())
        {
            //判定是否为文本段落
            if(object instanceof Paragraph)
            {
                //获取段落中的文本
                String text = ((Paragraph) object).getText();

//写入文本到txt文档
                bw.write(text);
            }
        }
        bw.flush();
        bw.close();
        fw.close();
    }
}

文本读取结果:

2.读取文本框中的图片

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextBox;
import javax.imageio.ImageIO;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ExtractImg {
    public static void main(String[] args) throws IOException {
        //加载含有文本框的Word文档
        Document doc = new Document();
        doc.loadFromFile("sample.docx");

//获取文本框
        TextBox textbox = doc.getTextBoxes().get(0);

//创建List对象
        List images = new ArrayList();

//遍历文本框中所有段落
        for (int i = 0 ; i < textbox.getBody().getParagraphs().getCount();i++)
        {
            Paragraph paragraph = textbox.getBody().getParagraphs().get(i);

//遍历段落中的所有子对象
            for (int j = 0; j < paragraph.getChildObjects().getCount(); j++)
            {
                Object object = paragraph.getChildObjects().get(j);

//判定对象是否为图片
                if (object instanceof DocPicture)
                {
                    //获取图片
                    DocPicture picture = (DocPicture) object;
                    images.add(picture.getImage());
                }
            }
        }

//将图片以PNG文件格式保存
        for (int z = 0; z < images.size(); z++) {
            File file = new File(String.format("图片-%d.png", z));
            ImageIO.write((RenderedImage) images.get(z), "PNG", file);
        }
    }
}

图片读取结果:

3.读取文本框中的表格

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.TextBox;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class ExtractTable {
    public static void main(String[]args) throws IOException {
        //加载Word测试文档
        Document doc = new Document();
        doc.loadFromFile("sample.docx");

//获取文本框
        TextBox textbox = doc.getTextBoxes().get(0);

//获取文本框中的表格
        Table table = textbox.getBody().getTables().get(0);

//保存到文本文件
        File file = new File("ExtractedTable.txt");
        if (file.exists())
        {
            file.delete();
        }
        file.createNewFile();
        FileWriter fw = new FileWriter(file, true);
        BufferedWriter bw = new BufferedWriter(fw);

//遍历表格中的段落并提取文本
        for (int i = 0; i < table.getRows().getCount(); i++)
        {
            TableRow row = table.getRows().get(i);
            for (int j = 0; j < row.getCells().getCount(); j++)
            {
                TableCell cell = row.getCells().get(j);
                for (int k = 0; k < cell.getParagraphs().getCount(); k++)
                {
                    Paragraph paragraph = cell.getParagraphs().get(k);
                    bw.write(paragraph.getText() + "\t");
                }
            }
            bw.write("\r\n");
        }

bw.flush();
        bw.close();
        fw.close();
    }
}

表格读取结果:

总结

以上是关于Java读取Word文本框的方法。操作的代码逻辑和编译方法都比较简单。后续将持续更新Java操作Word的文章,欢迎关注~

(0)

相关推荐

  • C# 读取Word文本框中的文本、图片和表格(附VB.NET代码)

    [概述] Word中可插入文本框,在文本框中可添加文本.图片.表格等内容.本篇文章通过C#程序代码介绍如何来读取文本框中的文本.图片和表格等内容.附VB.NET代码,有需要可作参考. [程序环境] 程 ...

  • wps文本框中怎么插入图片

    wps給文本框插入图片的方法 1.打开WPS文档,点击工具栏的"插入",然后插入文本框 2.绘制好文本框后,再次点击插入,然后插入"形状",插入喜欢的形状 3. ...

  • Word文档中怎样给图片和表格自动添加标题

    在编辑Word文档时,有时需要给图片和表格添加标题,如果一个个手动添加会很麻烦,我们可以设置自动给图片或是表格添加标题,下面小编就来介绍怎么设置 操作方法 01 打开一个Word文档,点击菜单栏的&q ...

  • 在Word2003文本框中对齐文本

    动画演示: ①将闪动的光标置于文档标题后,单击“插入”→“分隔符”,在对话框中选中“分节符”中的“下一页”项,单击“确定”按钮,为文档添加一个分节符,并将插入点后的内容分至下一页。 ② 将光标移至要重 ...

  • word文本框中黏贴图片显示不完整?

    有时候我们需要在文本框中插入图片,但是可能会显示不完整.今天我们就来看看怎么解决这个问题? 操作方法 01 我们在文本框中,插入图片,也许会出现下面的这种情况,图片只出现了一部分,其他大部分都没有出来 ...

  • Word 2007 中的形状或文本框中放置文字

    文本框 (文本框:一种可移动.可调大小的文字或图形容器.使用文本框,可以在一页上放置数个文字块,或使文字按与文档中其他文字不同的方向排列.)和大多数形状(线条.连接线和任意多边形 (任意多边形:使用& ...

  • word文档中的文本框如何设置添加虚线框

    今天跟大家介绍一下word文档中的文本框如何设置添加虚线框的具体操作步骤.1. 首先打开电脑,找到桌面上的word文档,双击打开2. 进入编辑页面后,依次点击上方菜单栏中的插入---文本框---横向选 ...

  • Word文本框中的文字如何设置竖排显示

    今天给大家介绍一下Word文本框中的文字如何设置竖排显示的具体操作步骤.1. 首先打开电脑上想要编辑的Word文档,如图,进入编辑页面后,将想要设置的[文本框]选中,右键,在打开的菜单中,选择[设置形 ...

  • Word如何对齐文本框中不同长度的文字

    Word是现在十分常用的办公软件之一,有些用户想知道如何对齐文本框中不同长度的文字,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步打开电脑中的Word文档,根据下图箭头所指,点击 ...