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。
方法2:Maven仓库导入。需在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() + "\t");//获取文本内容 //遍历段落中的所有子对象
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("\r\n");//写入内容到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:\Users\Administrator\IdeaProjects\Table_Doc\ReadTextFromTable.txt
C:\Users\Administrator\IdeaProjects\Table_Doc\提取的表格图片-0.png
C:\Users\Administrator\IdeaProjects\Table_Doc\inputfile.docx
在代码中,文件路径可自定义为其他路径。
文本数据读取结果:
图片读取结果:
—End—
Java 读取Word表格中的文本和图片的更多相关文章
- Java 读取Word批注中的文本和图片
本文将介绍读取Word批注的方法,包括读取Word批注中的文本及图片.关于操作Word批注的方法还可以参考这两篇文章:Java 添加.回复.修改.删除Word批注:Java 给Word指定字符串添加批 ...
- [转载]JAVA获取word表格中数据的方案
上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...
- [原创]JAVA获取word表格中数据的方案
上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...
- java读取Excel表格中的数据
1.需求 用java代码读取hello.xls表格中的数据 2.hello.xls表格 3.java代码 package com.test; import java.io.File; import j ...
- 【编程技巧】JAVA读取url地址中的文本内容
应用场景:最常见的是有自已的网站,在注册广告联盟的时候.都需要下载一个文本文件来验证网站的有效性.例如淘宝.京东等都有这一过程 实现代码://读url地址的内容 public void ...
- Java读取word中表格
因为要新建一个站,公司要把word表格的部分行列存到数据库中.之前用java操作过excel,本来打算用java从word表格中读取数据,再存到数据库中,结果因为权限不够,无法访问公司要写的那个数据库 ...
- Java 读取Word文本框中的文本/图片/表格
Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...
- C# 读取Word文本框中的文本、图片和表格(附VB.NET代码)
[概述] Word中可插入文本框,在文本框中可添加文本.图片.表格等内容.本篇文章通过C#程序代码介绍如何来读取文本框中的文本.图片和表格等内容.附VB.NET代码,有需要可作参考. [程序环境] 程 ...
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...
随机推荐
- CMMI V2.0丨如何通过CMMI真正在企业中的实施规模化敏捷开发
在过去的几年中,敏捷开发已经从一个利基概念(利基是指针对企业的优势细分出来的市场,这个市场不大,而且没有得到令人满意的服务.产品推进这个市场,有盈利的基础.)转变为全球许多大公司采用的标准实践. 通过 ...
- Java匿名对象导致的内存泄漏
这几天与在某群与群友讨论了Runnable匿名对象导致内存泄漏的相关问题,特此记录一下. 示例代码如下: package com.memleak.memleakdemo; public class L ...
- fedora21 桌面用户自动登录lightdm.conf -20190520 方法
修改 /etc/lightdm/lightdm.conf 步骤:1解除注释#autologin-user=root 2等号 =后面是root或者普通用户的用户名 例如:root用户自动登录 autol ...
- dpkg -S {file} #ubuntu 14.04 rpm -qf {file} #centos 7
Linux查找命令或组件对应安装包的方法原创FJEagle 最后发布于2017-12-15 19:10:06 阅读数 4603 收藏展开Linux查找命令或组件对应安装包的方法当新搭建服务器或者维护不 ...
- 攻防世界(六)supersqli
攻防世界系列:supersqli 方法一: 用逗号包裹回显正常,说明存在注入 1';--+(注释符也可用 -- 或 # 发现均未被过滤!) 有order by 语句可知表由2个字段,使用联合查询 (想 ...
- Wordpress用文件记录访客 IP和访问量
1.记录访问量,显示访客IP [php原码] <?php /*打开文件用于记录访问量,如果文件不存在自动创建*/ $counterFile = "counter.txt"; ...
- Python数模笔记-Scipy库(1)线性规划问题
1.最优化问题建模 最优化问题的三要素是决策变量.目标函数和约束条件. (1)分析影响结果的因素是什么,确定决策变量 (2)决策变量与优化目标的关系是什么,确定目标函数 (3)决策变量所受的限制条件是 ...
- 实时实例分割的Deep Snake:CVPR2020论文点评
实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...
- CVPR2020论文解读:OCR场景文本识别
CVPR2020论文解读:OCR场景文本识别 ABCNet: Real-time Scene Text Spotting with Adaptive Bezier-Curve Network∗ 论文 ...
- 如何使用TVM Pass红外线
如何使用TVM Pass红外线 随着Relay / tir中优化遍数的增加,执行并手动维护其依赖关系变得很棘手.引入了一个基础结构来管理优化过程,将其应用于TVM堆栈中IR的不同层. Relay / ...