Java解析多种文件输出字符串以及图片(ppt、odc、odcx、pptx、xls、xlsx、rtf)
所需要的maven汇总:
<repositories><repository><id>com.e-iceblue</id><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository> </repositories><dependencies><dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6.12</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.15</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.15</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.15</version></dependency><dependency><groupId>e-iceblue</groupId><artifactId>spire.presentation.free</artifactId><version>3.9.0</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency> </dependencies>
Pptx:
import com.spire.presentation.Presentation;
import content.Content;
import org.apache.poi.sl.usermodel.Shape;
import org.apache.poi.sl.usermodel.Slide;
import org.apache.poi.sl.usermodel.SlideShow;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFTable;
import org.apache.poi.xslf.usermodel.XSLFTableCell;
import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph;
import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShape;
import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlide;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
public class ReadPptx {
public static String PPTXutil(String fileName, int limit,String readPhoto) {
Presentation ppt = new Presentation();
InputStream is=null;
SlideShow slideShow = null;
StringBuilder sb = new StringBuilder();
String str = "";
try {
is = new FileInputStream(fileName);
slideShow = new XMLSlideShow(is);
FileInputStream in = new FileInputStream(fileName);
XMLSlideShow xmlSlideShow = new XMLSlideShow(in);
List<XSLFSlide> slides = xmlSlideShow.getSlides();
for (XSLFSlide slide : slides) {
CTSlide rawSlide = slide.getXmlObject();
CTGroupShape gs = rawSlide.getCSld().getSpTree();
CTShape[] shapes = gs.getSpArray();
String next = "!!";
sb.append(next);
for (CTShape shape : shapes) {
CTTextBody tb = shape.getTxBody();
String nextline = " ";
sb.append(nextline);
if (null == tb) {
continue;
}
CTTextParagraph[] paras = tb.getPArray();
for (CTTextParagraph textParagraph : paras) {
CTRegularTextRun[] textRuns = textParagraph.getRArray();
for (CTRegularTextRun textRun : textRuns) {
sb.append(textRun.getT());
}
}
}
}
sb.append("\n");
sb.append("表格:");
if (slideShow != null) {
for (Slide slide : (List<Slide>) slideShow.getSlides()) {
List shapes = slide.getShapes();
for (int i = 0; i < shapes.size(); i++) {
Shape shape = (Shape) shapes.get(i);
if (shape instanceof XSLFTable) {
int rowSize = ((XSLFTable) shape).getNumberOfRows();
int columnSize = ((XSLFTable) shape).getNumberOfColumns();
for (int rowNum = 0; rowNum < rowSize; rowNum++) {
for (int columnNum = 0; columnNum < columnSize; columnNum++) {
XSLFTableCell cell = ((XSLFTable) shape).getCell(rowNum, columnNum);
String text = cell.getText();
String line=" ";
sb.append(text);
sb.append(line);
}
sb.append(",");
}
}
}
}
}
sb.delete(0, 3);
sb.delete((sb.length()-1),sb.length());
str = sb.toString();
if (limit==0){
System.out.println(str);
}
if (limit<str.length()){
String string = str.substring(0,limit);
System.out.println(string);
}
xmlSlideShow.close();
ppt.loadFromFile(fileName);
for (int i = 0; i < ppt.getImages().getCount(); i++) {
BufferedImage image = ppt.getImages().get(i).getImage();
ImageIO.write(image, "PNG", new File(String.format(readPhoto + "PPTX"+"photo%1$s.jpg", i)));
}
} catch (FileNotFoundException e) {
} catch (Exception e) {
} finally {
try {
if (slideShow != null) {
slideShow.close();
}
if (is != null) {
is.close();
}
} catch (IOException e) {
}
}
return str;
}
private static void decoderBase64File(Map<String, String> map) {
}
public static void main(String[] args) {
//fileName读取文件路径,reaePhoto为保存读取的图片路径
PPTXutil("E://ss//666.pptx",0,"src//main//java//photo//");
}
}
Ppt:
import com.spire.presentation.Presentation;
import content.Content;
import org.apache.poi.hslf.extractor.PowerPointExtractor;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class ReadPpt {
public static String PPTutil( String fileName,int limit,String readPhoto) {
String str="";
PowerPointExtractor test = null;
InputStream in = null;
try {
in = new FileInputStream(fileName);
test = new PowerPointExtractor(in);
str = test.getText();
if (limit == 0) {
System.out.println(str);
} else {
str = str.substring(0, limit);
System.out.println(str);
}
Presentation photo = new Presentation();
photo.loadFromFile(fileName);
for (int i = 0; i < photo.getImages().getCount(); i++) {
BufferedImage image = photo.getImages().get(i).getImage();
ImageIO.write(image, "PNG", new File(String.format(readPhoto +"ppt"+"photo%1$s.jpg", i)));
}
}catch (Exception e) {
e.printStackTrace();
} finally {
try {
test.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return str;
}
public static void main(String[] args) throws IOException {
//fileName读取文件路径,reaePhoto为保存读取的图片路径
PPTutil("E:\\ss\\555.ppt",0,"src//main//java//photo//");
}
}
Doc:
import content.Content;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.hwpf.model.PicturesTable;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Picture;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ReadDoc {
public static String wordutil(String fileName, int limit,String readPhoto){
String str = "";
InputStream input = null;
Range range = null;
HWPFDocument doc = null;
List<Picture> pictsList = null;
try {
input = new FileInputStream(new File(fileName));
WordExtractor wex = new WordExtractor(input);
str = wex.getText();
if (limit==0){
System.out.println(str);
}else {
str = str.substring(0,limit);
System.out.println(str);
}
doc = new HWPFDocument(new FileInputStream(fileName));
range = doc.getRange();
pictsList = new ArrayList();
byte[] dataStream = doc.getDataStream();
int numChar = range.numCharacterRuns();
PicturesTable pTable = new PicturesTable(doc, dataStream, new byte[1024]);
for (int j = 0; j < numChar; ++j) {
CharacterRun cRun = range.getCharacterRun(j);
boolean has = pTable.hasPicture(cRun);
if (has) {
Picture picture = pTable.extractPicture(cRun, true);
pictsList.add(picture);
}
}
int size = pictsList.size();
for (int i = 0; i < size; ++i) {
Picture p = pictsList.get(i);
p.writeImageContent(new FileOutputStream(readPhoto+"/" +"DocPhoto"+ i+".jpg"));
}
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
public static void main(String[] args) {
//fileName读取文件路径,reaePhoto为保存读取的图片路径
wordutil("E:\\ss\\333.doc",0,"src/main/java/photo");
}
}
Docx:
package word;
import content.Content;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ReadDocx{
public static String wordutil(String fileName,int limit,String readPhoto){
File file = new File(fileName);
String str = "";
try {
FileInputStream fis = new FileInputStream(file);
XWPFDocument xdoc = new XWPFDocument(fis);
XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc);
String doc1 = extractor.getText();
fis.close();
str = doc1;
if (limit==0){
System.out.println(str);
}else {
String string = str.substring(0,limit);
System.out.println(string);
}
List<XWPFPictureData> picList = xdoc.getAllPictures();
for (int i = 0; i < picList.size(); i++) {
XWPFPictureData pic = picList.get(i);
byte[] bytev = pic.getData();
if (bytev.length > 300) {
FileOutputStream fos = new FileOutputStream(readPhoto+"Docx" + "photo"+i+".jpg");
fos.write(bytev);
}
}
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
public static void main(String[] args) {
//fileName读取文件路径,reaePhoto为保存读取的图片路径
wordutil("E:\\ss\\222.Docx", 0,"src/main/java/photo/");
}
}
Xlsx:
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.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class XlsxReader {
public static String searchExcelXlsx(String fileUrl){
String str = new String();
List<String> list = new ArrayList<>();
File file = new File(fileUrl);
try {
InputStream is =new FileInputStream(file.getAbsolutePath());
XSSFWorkbook hb = new XSSFWorkbook(is);
System.out.println("表单数量:"+hb.getNumCellStyles());
for (int i = 0; i < hb.getNumCellStyles(); i++) {
Sheet sheet = hb.getSheetAt(i);
int firstrow = sheet.getFirstRowNum();
int lastrow = sheet.getLastRowNum();
for (int j = firstrow; j < lastrow + 1; j++) {
Row row = sheet.getRow(j);
list.add("\n");
if (row != null) {
int firstcell = row.getFirstCellNum();
int lastcell = row.getLastCellNum();
for (int k = firstcell; k < lastcell; k++) {
Cell cell = row.getCell(k);
if (cell != null) {
list.add(cell.toString());
list.add("|");
}
}
}
}
}
str= String.valueOf(list);
str = str.replace(",","");
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
public static void main(String[] args) {
//fileName读取文件路径
searchExcelXlsx("E://ss//999.xlsx");
}
}
Xls:
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import java.io.*;
public class XlsReader {
public static String excelutil(String fileName, int limit){
StringBuilder builder = new StringBuilder("");
String str ="";
File file = new File(fileName);
try {
InputStream is = new FileInputStream(file.getAbsolutePath());
Workbook wb = Workbook.getWorkbook(is);
int sheet_size = wb.getNumberOfSheets();
for (int index = 0; index < sheet_size; index++) {
Sheet sheet = wb.getSheet(index);
for (int i = 0; i < sheet.getRows(); i++) {
for (int j = 0; j < sheet.getColumns(); j++) {
str = sheet.getCell(j, i).getContents();
builder.append(str);
String test =" ";
builder.append(test);
}
}
}
str= String.valueOf(builder);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (limit==0){
System.out.println(builder);
}else {
str = builder.substring(0,limit);
System.out.println(str);
}
return str;
}
public static void main(String[] args) {
//fileName读取文件路径
excelutil( "E:\\ss\\111.xls",0);
}
}
Rtf:
import javax.swing.text.DefaultStyledDocument; import javax.swing.text.rtf.RTFEditorKit; import java.io.File; import java.io.FileInputStream; import java.io.InputStream;public class ReadRtf {public static String RTFutil(String fileName) {String str = null;File file = new File(fileName);try {DefaultStyledDocument styledDoc = new DefaultStyledDocument();InputStream is = new FileInputStream(file);new RTFEditorKit().read(is, styledDoc, 0);str = new String(styledDoc.getText(0,styledDoc.getLength()).getBytes("ISO8859_1"),"GBK");} catch (Exception e) {e.printStackTrace();}System.out.println(str);return str;}public static void main(String[] args) {RTFutil("E://ss//777.rtf");}
Java解析多种文件输出字符串以及图片(ppt、odc、odcx、pptx、xls、xlsx、rtf)相关推荐
- java获得src文件夹下的图片和 获得resource目录下的文件
java获得src文件夹下的图片和 获得resource目录下的文件 1 获得src文件夹下的图片 文件位置 获得url代码 URL url= getClass().getClassLoader(). ...
- java 解析 csv 文件
文章分类:JavaEye 一.貌似有bug,不行用 二.或 三. 的方法 Java代码 import java.io.BufferedReader; import java.io.FileInpu ...
- java解析Excel文件
下文介绍java解析Excel文件的方案 前置准备 1.第三方jar包或者Maven配置 org.apache.poi的jar包 Maven配置如下 <groupId>org.apache ...
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
- java解析xml文件的几种方式(DOM解析)
好久不用的东西,今天居然被面试官问到了.那既然这样,我们就一起回顾下java解析xml文件的几种方式吧. DOM解析 dom解析所需依赖是我们jdk自带的,所以只需要使用jdk为我们提供的接口即可上手 ...
- Java解析yaml文件
Java解析yaml文件 1. 什么是yaml ? 2. 导入maven依赖 3. yaml 案例文件 4. 示例代码 5. 解析结果 1. 什么是yaml ? 参考下方链接 yaml快速入门 2. ...
- java 读取mp3,java 解析MP3文件
java 解析MP3文件 首先需要知道的是,MP3文件的文件信息都放在文件最后的128个字节里面,这128个字节分别存储的信息如下: char Header[3]; /* 标签头必须是" ...
- java解析Excel文件的方法
java解析Excel文件的方法 介绍 1.1 pom依赖 1.2 将数据流转化为可解析的Workbook类型文件 1.3 解析 1.4 Controller层接收前端传递的Excel文件(前端使用E ...
- 用正则表达式和java解析csv文件
用正则表达式和java解析csv文件 作者:弹着钢琴设计 来源:博客园 发布时间:2009-06-15 18:31 阅读:337 次 原文链接 [收藏] 在解析csv文件之前,先来看看 ...
- java解析dxf文件_浅析JVM方法解析、创建和链接
一:前言 上周末写了一篇文章<你知道Java类是如何被加载的吗?>,分析了HotSpot是如何加载Java类的,干脆趁热打铁,本周末再来分析下Hotspot又是如何解析.创建和链接类方法的 ...
最新文章
- js 设计模式与继承学习
- Vue菜鸟之路: 封装上传组件
- [转载]以及部分总结--Linux下创建单机ASM存储的Oracle实例的过程---感谢方总
- html安卓手机打开后只有半屏,宽度设置100%在移动端时变成一半
- mysql definer设置为root_mysql如何修改所有的definer
- 基于Matlab的三维胖射线追踪算法
- echarts树图节点垂直间距_铝模板的安装、拆除、节点、禁止做法详解
- 调试wifi简单记录
- Android 扩展ViewFlipper做导航页(一)
- 【2019杭电多校第七场1006=HDU6651】Final Exam(思维转换)
- 中国省市区乡县名称代码对照表
- 简单明了的告诉你什么是CPUID
- PHP Yar - 学习/实践
- button按钮的tittle 折行且居中显示
- OC 下载iCloud 图片和视频
- MOBA摄像机表现及交互式操作
- 波卡(Polkadot)创始人Gavin Wood眼中加密世界
- C300--HGU ONU 配置思路指导_方式1
- MFC Windows 程序设计[218]之网络打印机(附源码)
- pycharm出现low memory警告,卡顿
热门文章
- 【LOJ2863】「IOI2018」组合动作
- 极X客x时x间 《零基础学Python》视频教程分享
- QQ推广,QQ在线代码
- 编码 8421BCD 码的故事
- PyTorch深度学习(B站刘二大爷)第九讲 多分类问题
- Python_day04
- WordPress采集插件推荐都是免费采集插件
- IP地址中A类、B类、C类地址的区别
- 互联网思维到底是什么?
- bifrostv配置文件_数据同步配置 - 全量任务配置 - 《Bifrost v1.1.0 中文文档》 - 书栈网 · BookStack...