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


    本文通过Java程序来展示如何读取Word表格,包括读取表格中的文本和图片。下面是具体实现的步骤和方法。

    1. 程序环境准备

    • 代码编译工具:IntelliJ IDEA
    • Jdk版本:1.8.0
    • 测试文档:Word .docx 2013
    • Jar包:free spire.doc.jar 3.9.0

    用于测试的Word文档如下:

    Jar导入步骤及方法:

    方法1手动导入。打开Project Structure(Shift+Ctrl+Alt+S)界面,选择【Modules】—【Dependencies】,点击“+”,【JARs or directories…】,选择本地路径中的jar包,添加后,勾选,点击“OK”或者“Apply”导入jar。

    方法2Maven仓库导入。需在pom.xml文件中配置maven路径并指定free spire.doc.jar 3.9.0的依赖,然后下载导入。具体配置如下:

    <repositories>
            <repository>
                <id>com.e-iceblue</id>
                <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
            </repository>
        </repositories>
    <dependencies>
        <dependency>
            <groupId> e-iceblue </groupId>
            <artifactId>free.spire.doc</artifactId>
            <version>3.9.0</version>
        </dependency>
    </dependencies>

     

    2. Java代码

    import com.spire.doc.*;
    import com.spire.doc.documents.Paragraph;
    import com.spire.doc.fields.DocPicture;
    import com.spire.doc.interfaces.ITable;
    
    import javax.imageio.ImageIO;
    import java.awt.image.RenderedImage;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class GetTable {
        public static void main(String[] args)throws IOException {
            //加载Word测试文档
            Document doc = new Document();
            doc.loadFromFile("inputfile.docx");
    
            //获取第一节
            Section section = doc.getSections().get(0);
    
            //获取第一个表格
            ITable table = section.getTables().get(0);
    
            //创建txt文件(用于写入表格中提取的文本)
            String output = "ReadTextFromTable.txt";
            File textfile = new File(output);
            if (textfile.exists())
            {
                textfile.delete();
            }
            textfile.createNewFile();
            FileWriter fw = new FileWriter(textfile, true);
            BufferedWriter bw = new BufferedWriter(fw);
    
            //创建List
            List images = new ArrayList();
    
            //遍历表格中的行
            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() + "	");//获取文本内容
    
                        //遍历段落中的所有子对象
                        for (int x = 0; x < paragraph.getChildObjects().getCount(); x++)
                        {
                            Object object = paragraph.getChildObjects().get(x);
                            //判定对象是否为图片
                            if (object instanceof DocPicture)
                            {
                                //获取图片
                                DocPicture picture = (DocPicture) object;
                                images.add(picture.getImage());
                            }
                        }
                    }
                }
                bw.write("
    ");//写入内容到txt文件
            }
            bw.flush();
            bw.close();
            fw.close();
    
            //将图片以PNG文件格式保存
            for (int z = 0; z < images.size(); z++)
            {
                File imagefile = new File(String.format("提取的表格图片-%d.png", z));
                ImageIO.write((RenderedImage) images.get(z), "PNG", imagefile);
            }
        }
    }

    3. 文本、图片读取效果

    完成代码编辑后,执行程序,读取表格中的文本数据和图片。代码中的文件路径为IDEA项目文件夹路径,如:

    C:UsersAdministratorIdeaProjectsTable_DocReadTextFromTable.txt

    C:UsersAdministratorIdeaProjectsTable_Doc提取的表格图片-0.png

    C:UsersAdministratorIdeaProjectsTable_Docinputfile.docx

    在代码中,文件路径可自定义为其他路径。

    文本数据读取结果:

    图片读取结果:

    —End—

  • 相关阅读:
    【LeetCode】Validate Binary Search Tree
    【LeetCode】Search in Rotated Sorted Array II(转)
    【LeetCode】Search in Rotated Sorted Array
    【LeetCode】Set Matrix Zeroes
    【LeetCode】Sqrt(x) (转载)
    【LeetCode】Integer to Roman
    贪心算法
    【LeetCode】Best Time to Buy and Sell Stock III
    【LeetCode】Best Time to Buy and Sell Stock II
    CentOS 6 上安装 pip、setuptools
  • 原文地址:https://www.cnblogs.com/Yesi/p/14963968.html
Copyright © 2020-2023  润新知