目录

  • pom
  • 代码
  • 结果

pom

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.8</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.8</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.8</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.8</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.1</version>
</dependency>
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.9</version>
</dependency>
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.3</version>
</dependency>

代码

import org.apache.pdfbox.io.RandomAccess;
import org.apache.pdfbox.io.RandomAccessFile;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;/*** 获取文件中的文本** @author 明快de玄米61* @date 2022/12/8 23:50*/
public class Test {public static void main(String[] args) {// 测试获取doc中的文本System.out.println(extractDoc("C:\\test\\20221115\\222.doc"));// 测试获取docx中的文本System.out.println(extractDocx("C:\\test\\20221115\\111.docx"));// 测试获取xls中的文本System.out.println(extractXls("C:\\test\\20221115\\444.xls"));// 测试获取xlsx中的文本System.out.println(extractXlsx("C:\\test\\20221115\\333.xlsx"));// 测试获取ppt中的文本System.out.println(extractPpt("C:\\test\\20221115\\555.ppt"));// 测试获取pptx中的文本System.out.println(extractPptx("C:\\test\\20221115\\555.pptx"));// 测试获取pdf中的文本System.out.println(extractPdf("C:\\test\\20221115\\888.pdf"));// 测试获取xml中的文本System.out.println(extractXml("C:\\test\\20221115\\1000.xml"));}/*** 获取doc中的文本** @param filePath 文件全路径* @return 文本* @author 明快de玄米61* @date 2022/12/18 23:22**/private static String extractDoc(String filePath) {try (InputStream in = new FileInputStream(filePath)) {WordExtractor extractor = new WordExtractor(in);return extractor.getText();} catch (Exception e) {e.printStackTrace();}return null;}/*** 获取docx中的文本** @param filePath 文件全路径* @return 文本* @author 明快de玄米61* @date 2022/12/18 23:22**/private static String extractDocx(String filePath) {try (InputStream in = new FileInputStream(filePath)) {XWPFDocument xdoc = new XWPFDocument(in);XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc);return extractor.getText();} catch (Exception e) {e.printStackTrace();}return null;}/*** 获取xls中的文本** @param filePath 文件全路径* @return 文本* @author 明快de玄米61* @date 2022/12/18 23:22**/private static String extractXls(String filePath) {try (InputStream in = new FileInputStream(filePath)) {Workbook workbook = new HSSFWorkbook(in);return workbook2String(workbook);} catch (Exception e) {e.printStackTrace();}return null;}/*** 获取xlsx中的文本** @param filePath 文件全路径* @return 文本* @author 明快de玄米61* @date 2022/12/18 23:22**/private static String extractXlsx(String filePath) {try (InputStream in = new FileInputStream(filePath)) {Workbook workbook = new XSSFWorkbook(in);return workbook2String(workbook);} catch (Exception e) {e.printStackTrace();}return null;}private static String workbook2String(Workbook workbook) {StringBuffer sb = new StringBuffer();if (workbook != null) {for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) {// 获得当前sheet工作表Sheet sheet = workbook.getSheetAt(sheetNum);if (sheet == null) {continue;}// 获得当前sheet的开始行int firstRowNum = sheet.getFirstRowNum();// 获得当前sheet的结束行int lastRowNum = sheet.getLastRowNum();// 循环除了第一行的所有行sb.append(sheet.getSheetName() + "\n");for (int rowNum = firstRowNum; rowNum <= lastRowNum; rowNum++) {// 获得当前行Row row = sheet.getRow(rowNum);if (row == null || row.getPhysicalNumberOfCells() == 0) {/* String[] a=new String[0]; list.add(a); */// sb.append("\r\n");continue;} // 获得当前行的开始列int firstCellNum = row.getFirstCellNum();// 获得当前行的列数int lastCellNum = row.getLastCellNum();// String[] cells = new// String[row.getPhysicalNumberOfCells()];// 循环当前行for (int cellNum = firstCellNum; cellNum < lastCellNum; cellNum++) {Cell cell = row.getCell(cellNum);String value = cellValue(cell);if (!"".equals(value)) {sb.append(value);sb.append(",");}}}sb.append("\n");}}return sb.toString();}/*** 获得Excel格子里的内容** @param cell 每个格子* @return*/private static String cellValue(Cell cell) {String cellValue = "";if (cell == null) {return cellValue;}// 把数字当成String来读,避免出现1读成1.0的情况// if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {// // cell.setCellType(Cell.CELL_TYPE_STRING);//// }// 判断数据的类型switch (cell.getCellType()) {case Cell.CELL_TYPE_NUMERIC: // 数字// cellValue = String.valueOf(cell.getNumericCellValue());short format = cell.getCellStyle().getDataFormat();SimpleDateFormat sdf = null;if (format == 14 || format == 31 || format == 57 || format == 58|| (176 <= format && format <= 178)|| (182 <= format && format <= 196)|| (210 <= format && format <= 213) || (208 == format)) {if (format == 14) {sdf = new SimpleDateFormat("yyyy/MM/dd");} else {sdf = new SimpleDateFormat("yyyy年MM月dd日");}double value = cell.getNumericCellValue();Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value);if (date == null || "".equals(date)) {cellValue = "";}try {cellValue = (sdf.format(date));} catch (Exception e) {e.printStackTrace();cellValue = "";}} else { // 不是日期格式cell.setCellType(Cell.CELL_TYPE_STRING);String temp = cell.getStringCellValue();// 判断是否包含小数点,如果不含小数点,则以字符串读取,如果含小数点,则转换为Double类型的字符串if (temp.indexOf(".") > -1) {cellValue = (String.valueOf(new Double(temp)).trim());} else {cellValue = (temp.trim());}}break;case Cell.CELL_TYPE_STRING: // 字符串cellValue = String.valueOf(cell.getStringCellValue());break;case Cell.CELL_TYPE_BOOLEAN: // BooleancellValue = String.valueOf(cell.getBooleanCellValue());break;case Cell.CELL_TYPE_FORMULA: // 公式cellValue = String.valueOf(cell.getCellFormula());break;case Cell.CELL_TYPE_BLANK: // 空值cellValue = "";break;case Cell.CELL_TYPE_ERROR: // 故障cellValue = "";// 非法字符break;default:cellValue = "";// 未知类型break;}return cellValue;}/*** 获取ppt中的文本** @param filePath 文件全路径* @return 文本* @author 明快de玄米61* @date 2022/12/18 23:22**/private static String extractPpt(String filePath) {try (InputStream in = new FileInputStream(filePath)) {StringBuffer content = new StringBuffer();SlideShow ss = new SlideShow(new HSLFSlideShow(in));Slide[] slides = ss.getSlides();// 获得每一张幻灯片for (int i = 0; i < slides.length; i++) {TextRun[] t = slides[i].getTextRuns();// 为了取得幻灯片的文字内容,建立TextRunfor (int j = 0; j < t.length; j++) {content.append(t[j].getText());// 这里会将文字内容加到content中去}content.append(slides[i].getTitle());}return content.toString();} catch (Exception e) {e.printStackTrace();}return null;}/*** 获取pptx中的文本** @param filePath 文件全路径* @return 文本* @author 明快de玄米61* @date 2022/12/18 23:22**/private static String extractPptx(String filePath) {try (InputStream in = new FileInputStream(filePath)) {XMLSlideShow slide = new XMLSlideShow(in);XSLFPowerPointExtractor extractor = new XSLFPowerPointExtractor(slide);return extractor.getText();} catch (Exception e) {e.printStackTrace();}return null;}/*** 获取pdf中的文本** @param filePath 文件全路径* @return 文本* @author 明快de玄米61* @date 2022/12/18 23:22**/private static String extractPdf(String filePath) {RandomAccess rf = null;PDDocument document = null;try {rf = new RandomAccessFile(new File(filePath), "r");PDFParser parser = new PDFParser(rf);parser.parse();document = parser.getPDDocument();PDFTextStripper stripper = new PDFTextStripper();String text = stripper.getText(document);document.close();return text;} catch (Exception e) {e.printStackTrace();} finally {if (document != null) {try {document.close();} catch (IOException e) {e.printStackTrace();}}if (rf != null) {try {rf.close();} catch (IOException e) {e.printStackTrace();}}}return null;}/*** 获取xml中的文本** @param filePath 文件全路径* @return 文本* @author 明快de玄米61* @date 2022/12/18 23:22**/private static String extractXml(String filePath) {try (InputStream in = new FileInputStream(filePath)) {Document doc = new SAXReader().read(in);return doc.asXML();} catch (Exception e) {e.printStackTrace();}return null;}
}

结果

java:获取后缀为doc、docx、xls、xlsx、ppt、pptx、pdf、xml的文件中的文本相关推荐

  1. doc, docx, xls, xlsx, ppt, pptx,txt。等文件转化为pdf

    需要OpenOffice第三插件的支持 ,支持window\linux\mac等系统.doc", "docx", "xls", "xlsx& ...

  2. 微信小程序 - 在线预览 Office 文件(doc / docx / xls / xlsx / ppt / pptx / pdf)

    效果图 前言 网上大部分教程功能有问题且文章无逻辑混乱,本文将提供优秀的示例. 本文只适用于预览 服务端接口返回的网络地址文件,"本地上传" 文件并预览原理一样, 例如服务端接口返 ...

  3. POI解析文档内容(txt,doc,docx,xls,xlsx,ppt,pdf)

    Apache POI  是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为" ...

  4. doc/docx/xls/xlsx 转PDF

    使用语言 python 使用版本 python3 部分文档不能编辑不能解析文档损坏无法处理,运行前需在本地安装Office 参考链接:https://www.cnblogs.com/lzhc/p/10 ...

  5. vue - - - - - 在线预览常见文件格式 .doc, .docx, .xls, .xlsx,.pdf

    在线预览常见文件 1.HTML5 - ```embed```标签 1.1 注意⚠️ 1.2 使用方式 2. HTML - ```iframe```标签 2.1 注意⚠️ 2.2 使用方式 3. HTM ...

  6. android解析doc,docx,xls,xlsx文件

    导读:有的时候我们在开发android中需要解析一些我们比较常用的格式,比如doc.docx.xls.xlsx,那么我们要是正常的话就解析不了.这时我们就要用tm-extractors-0.4.jar ...

  7. 解决jodconverter 2.2.1 版本不支持docx、xlsx、pptx 转换成PDF格式异常

    文章目录 一.基础对比 1.版本对比 2.异常现象 二.分析定位 2.1. 找异常输出处 2.2. 找异常源头 2.3. api源头 三.实现流程 3.1. 思路 3.2. 新建包重写类 3.3. 完 ...

  8. web -- 实现在线预览docx、xlsx、pptx文件。

    功能 创建复杂的文档.专业级的电子表格.令人惊叹的演示文稿.随时可填写的表单.PDF和电子书.支持主流格式:docx.xlsx.pptx.odt.ods.odp.doc.xls.ppt.pdf.txt ...

  9. php 读取并显示doc,PHP读取doc,docx,xls,pdf,txt内容

    我的一个客户有这样的需求:上传文件,可以是doc,docx,xls,pdf,txt格式,现需要用php读取这些文件的内容,然后计算文件里面字数. 1.PHP读取DOC格式的文件 首先介绍一下如何在wi ...

最新文章

  1. leetcode 528. Random Pick with Weight
  2. Aix /etc/hosts.equiv 文件的用途及用法
  3. bzoj 1924: [Sdoi2010]所驼门王的宝藏
  4. Tomcat7目录结构详解(非常详细)
  5. UVA1586 ​​​​​​​ Molar mass
  6. linux下的c语言编程实验4,实验四-Linux下的C语言编程
  7. 斯坦福发布最新NLP处理工具stanfordnlp体验
  8. SqlServer修改密码后登陆不上
  9. 解决idea中http://java.sun.com/jsp/jstl/core“红色异常
  10. 汪琪玩Excel:只复制可见单元格
  11. 淘宝客佣金设置多少合适?淘宝客的佣金是怎么算的?
  12. 程序框图计算机算法语言应用,数学之算法与程序框图
  13. 【Microsoft Azure 的1024种玩法】二十八. 基于Azure Cloud搭建IPS入侵防御系统实现安全流量实时分析
  14. 机器学习实战(三)朴素贝叶斯 (Peter Harrington著)
  15. Vue 安装echarts-gl引入vue报错
  16. 超链接的伪类及如何清除缓存
  17. 愿你历经千帆,得偿所愿
  18. 3个图片去水印工具,干干净净去水印,每一个都是自留
  19. python爬取某海鲜直播标题,热度等
  20. 怎么将CAD图纸转换格成BMP图纸格式?怎么操作?

热门文章

  1. ArcGIS教程:视域
  2. 我对移动支付的看法_研究用户对移动支付的看法论文
  3. 数据探索简介——质量分析、特征分析
  4. Android针对IC卡读写的NFC开发
  5. js 图片下载(不是直接在页面打开图片)
  6. 淘宝直通车提取数据“_h”值 最新生成方案(2020.11.27)
  7. SecureCRT中文乱码、复制粘贴乱码解决办法
  8. Vue2(十一):脚手架配置代理、github案例、插槽
  9. 计算机无法与打印机建立,电脑无法与打印机连接 计算机网考题目2(6)
  10. IT培训机构怎么样?IT培训机构推荐