zoukankan      html  css  js  c++  java
  • 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() + "	");
                    }
                }
                bw.write("
    ");
            }
    
            bw.flush();
            bw.close();
            fw.close();
        }
    }

    (完)

  • 相关阅读:
    结巴分词 0.14 版发布,Python 中文分词库
    Lazarus 1.0.2 发布,Pascal 集成开发环境
    Android全屏 去除标题栏和状态栏
    服务器日志现 Android 4.2 传将添多项新特性
    Percona XtraBackup 2.0.3 发布
    长平狐 Android 强制设置横屏或竖屏 设置全屏
    NetBeans 7.3 Beta 发布,全新的 HTML5 支持
    CppDepend现在已经支持Linux
    GromJS 1.7.18 发布,服务器端的 JavaScript
    Apache OpenWebBeans 1.1.6 发布
  • 原文地址:https://www.cnblogs.com/Yesi/p/14486479.html
Copyright © 2011-2022 走看看