Java读取office-word(doc、docx)里面表格中的数据
- 依赖
<!--Java读取word中的表格数据--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version></dependency>
- 代码
import com.alibaba.fastjson.JSON;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringRunner;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;import static org.junit.Assert.*;@RunWith(SpringRunner.class)
@SpringBootTest
public class HandleDataTest {@AutowiredMongoTemplate mongoTemplate;// 读取doc文档中表格数据示例/*** 读取文档中表格* @param*/@Testpublic void testWord(){System.err.println("开始读取");String filePath = "G:\\项目文件\\附件3-代码 - 副本.doc";System.err.println("结束读取");List<Subject> resultList = new ArrayList<>();try{FileInputStream in = new FileInputStream(filePath);//载入文档// 处理docx格式 即office2007以后版本if(filePath.toLowerCase().endsWith("docx")){//word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格// 设置需要读取的表格 set是设置需要读取的第几个表格,total是文件中表格的总数int set = 1, total = 2;int num = set;// 过滤前面不需要的表格/* for (int i = 0; i < set-1; i++) {it.hasNext();it.next();}*/while(it.hasNext()){XWPFTable table = it.next();System.out.println("这是第" + num + "个表的数据");List<XWPFTableRow> rows = table.getRows();//读取每一行数据for (int i = 0; i < rows.size(); i++) {XWPFTableRow row = rows.get(i);System.err.println("第"+i+"行:");//读取每一列数据List<XWPFTableCell> cells = row.getTableCells();for (int j = 0; j < cells.size(); j++) {XWPFTableCell cell = cells.get(j);//输出当前的单元格的数据System.out.print("第"+j+"列:"+cell.getText() + "\t");}System.out.println();}// 过滤多余的表格/* while (num < total) {it.hasNext();it.next();num += 1;}*/}}else{// 处理doc格式 即office2003版本POIFSFileSystem pfs = new POIFSFileSystem(in);HWPFDocument hwpf = new HWPFDocument(pfs);Range range = hwpf.getRange();//得到文档的读取范围TableIterator it = new TableIterator(range);// 迭代文档中的表格// 如果有多个表格只读取需要的一个 set是设置需要读取的第几个表格,total是文件中表格的总数int set = 1, total = 10;int num = total;for (int i = 0; i < set-1; i++) {it.hasNext();it.next();}while (it.hasNext()) {Table tb = (Table) it.next();System.out.println("这是第" + num + "个表的数据");//迭代行,默认从0开始,可以依据需要设置i的值,改变起始行数,也可设置读取到那行,只需修改循环的判断条件即可for (int i = 0; i < tb.numRows(); i++) {Subject subject = new Subject();TableRow tr = tb.getRow(i);//迭代列,默认从0开始
// for (int j = 0; j < tr.numCells(); j++) {for (int j = 0; j < tr.numCells()-1; j++) {TableCell td = tr.getCell(j);//取得单元格//取得单元格的内容for(int k = 0; k < td.numParagraphs(); k++){Paragraph para = td.getParagraph(k);String s = para.text();//去除后面的特殊符号if(null != s && !"".equals(s)){s = s.substring(0, s.length()-1);}if(j == 0){subject.setCode(s);}if(j == 1){subject.setName(s);}System.out.print("---" + s + "\t");}}//将数据保存到数据库中mongoTemplate.save(subject);resultList.add(subject);System.out.println();}// 过滤多余的表格while (num < total) {it.hasNext();it.next();num += 1;}}}System.out.println("一共:" + resultList.size() + " 个");}catch(Exception e){e.printStackTrace();}
// System.out.println(JSON.toJSONString(resultList, true));}}
Java读取office-word(doc、docx)里面表格中的数据相关推荐
- 向大量Word文档的表格中填写数据
本文来自趣学python+python办公专栏该专栏致力于兴趣化.实用化的学习python会定期更新. 专栏链接:传送门 目录标题 导读 实际演示阶段 详细介绍该库 细节介绍 点击直接资料领取 导读 ...
- java poi 读word (doc,docx)表格
项目场景: 最近公司将线下流程线上话,提供上传模板的功能,很多表格都是在word里面生成的,找了很多资料处理docx 跟doc 最后docx 勉强可以用,doc还是不完善,最后只能沟通 限制上传doc ...
- Java读取、写入、处理Excel文件中的数据
在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Excel会有 ...
- Java获取word表格中的数据
前言: 有时系统中需要提取各种文件中的数据,比如做报表的系统中就常常与Excel表格数据做交互.做Excel报表数据时有选择POI实现的,但是POI功能也很单一,对于文档格式维护性差,最重要的是POI ...
- java读取word表格中的数据_JAVA获取word表格中数据的方案
上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...
- Word处理控件Aspose.Words功能演示:在 Java 中将 Word DOC/DOCX 转换为 PDF
Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word. A ...
- java实现读取excel表格中的数据,兼容xls和xlsx
前言 利用 java 实现读取 excel 表格中的数据,兼容 xls 与 xlsx 格式,不用额外做区分,写不同的实现方法. 引入的依赖包 <dependency><groupId ...
- java poi 模板填数据库,java使用POI读取excel模版并向固定表格里填写数据详解
java使用POI读取excel模版并向固定表格里填写数据详解:public class ExportExcelDemo { private HSSFWorkbook workbook = null; ...
- java搜索excel表格里的数据_Java读取Excel表格中的数据
前言 本文主要讲述如何在Java中读取Excel表中的数据并在控制台输出,实现工具为Eclipse 提示:以下是本篇文章正文内容,下面案例可供参考 一.添加jar包文件 描述:在Java中导入导出Ex ...
最新文章
- 决策树-随机森林-两种Feature importances排序方法
- mysql深入使用教程_深入mysql基础知识的详解
- python数据科学讲解_数据科学的概念-Python数据科学技术详解与商业项目实战精讲 - Python学习网...
- 蒸发器分段设计matlab程序_制冷系统蒸发器过热度控制回路的MATLAB仿真_何煜
- 已安装nginx动态添加模块
- 12GB内存版华为P30、P30 Pro工信部入网:售价或将突破7000元
- linux服务器上svn的log_SVN如何查看修改的文件记录
- 某中学校校园网络方案设计(课程设计)
- 解决vue+php跨域问题
- Leetcode题medium48/54/55/56/59/62/63/64,Python多种解法(四)
- Readyboost技术U 盘变内存,加速电脑(只针对Windows 7和Vista系统)
- 高效的word转换成pdf转换器
- android日期与时间滑动选择器
- 磨金石教育是正规的吗?插画好学吗?学习插画有哪些小技巧?
- 云原生时代一站式DevOps平台--阿里云效
- 《巴巴拉少校》读书笔记优秀范文2877字
- IOS-Svn-Cornerstone 终端 命令行
- 各种压缩算法的压缩效率,时间、压缩比等比较
- 刘海洋《LaTex入门》学习笔记4
- Nervos:链外扩容 + Layer 2才是区块链的未来(下)