导航:首页 > 文字图片 > java读取word图片

java读取word图片

发布时间:2022-04-17 00:36:00

如何在java中读取word文件

java读取word文档,获取文本内容,保留基本的换行格式。

java用POI对word进行解析。所需jar包,用maven引入

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.2-FINAL</version>
</dependency>

前端用webuploader上传控件,限制上传文件类型仅支持text和word.

txt为word的文本内容

Ⅱ java读取word文件的问题

请贴出代码,谢谢。
请关闭输入流,释放资源,谢谢。调用close()方法。
其他貌似没有发现什么问题。

public static String run(String filename){
WordExtractor extractor=null;
String text=null;
try{
FileInputStream in = new FileInputStream (filename);
extractor = new WordExtractor();
text=extractor.extractText(in);
}catch(Exception ex){
//log
return null;
}
return text;
}
public static void main(String[] args){
try{
FileOutputStream out=new FileOutputStream("result.txt");
out.write(WordProcess.run(args[0]).getBytes());
out.flush();
out.close();
}catch(Exception ex){
System.out.println(ex.toString());
}
}

看看这个。模范这样写,试试看。这个代码我试过,没问题,如果这样写还是有问题,那就不是代码的问题了。

Ⅲ java 中用poi读取word和用docx4j读取word

不知道你是具体读取Word里面的什么元素,下面以读取文字和图片为例吧,两个代码示例,你参考看看:

  1. 读取文本

import com.spire.doc.Document;

import java.io.FileWriter;

import java.io.IOException;

public class ExtractText {

public static void main(String[] args) throws IOException {

//加载Word文档
Document document = new Document();
document.loadFromFile("C:\Users\Administrator\Desktop\sample.docx");

//获取文档中的文本保存为String
String text=document.getText();

//将String写入Txt文件
writeStringToTxt(text,"ExtractedText.txt");
}

public static void writeStringToTxt(String content, String txtFileName) throws IOException {

FileWriter fWriter= new FileWriter(txtFileName,true);
try {
fWriter.write(content);
}catch(IOException ex){
ex.printStackTrace();
}finally{
try{
fWriter.flush();
fWriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

}


2. 读取图片


import com.spire.doc.Document;

import com.spire.doc.documents.DocumentObjectType;

import com.spire.doc.fields.DocPicture;

import com.spire.doc.interfaces.ICompositeObject;

import com.spire.doc.interfaces.IDocumentObject;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.LinkedList;

import java.util.List;

import java.util.Queue;

public class ExtractImages {

public static void main(String[] args) throws IOException {

//加载Word文档

Document document = new Document();

document.loadFromFile("C:\Users\Administrator\Desktop\sample.docx");

//创建Queue对象

Queue nodes = new LinkedList();

nodes.add(document);

//创建List对象

List images = new ArrayList();

//遍历文档中的子对象

while (nodes.size() > 0) {

ICompositeObject node = nodes.poll();

for (int i = 0; i < node.getChildObjects().getCount(); i++) {

IDocumentObject child = node.getChildObjects().get(i);

if (child instanceof ICompositeObject) {

nodes.add((ICompositeObject) child);

//获取图片并添加到List

if (child.getDocumentObjectType() == DocumentObjectType.Picture) {

DocPicture picture = (DocPicture) child;

images.add(picture.getImage());

}

}

}

}

//将图片保存为PNG格式文件

for (int i = 0; i < images.size(); i++) {

File file = new File(String.format("output/图片-%d.png", i));

ImageIO.write(images.get(i), "PNG", file);

}

}

}

注意这里使用的jar包是spire.doc.jar,需要在java程序中先导入jar文件。

Ⅳ 用Java从word中提取出图片

因为太长了, 我放我空间了
思路是2003以后, word就可存为xml, 二进制数据按base64编码
然后可以按解析xml文档方式获取图片数据
然后对它进行解码--

Ⅳ java读取带格式word内容

用jacob吧。。

/**
*@author eyuan
*/
package per.eyuan.word2txt.core;

import com.jacob.*;
import com.jacob.com.*;
import com.jacob.activeX.*;
import java.io.*;
import java.util.Scanner;

public class Core {
/**
* 实现转换的函数
* @param sourceFilesPath
* @param destinationFilesPath
* @param destinationFilesType
* @return void
* @see import com.jacob.activeX.*;
*/
public static void change(String sourceFilesPath,String destinationFilesPath,int destinationFilesType){
//使用word文件所在的目录(源路径)建立目录文件
File sourcePathFile=new File(sourceFilesPath);
//取得word文件(源文件列表)
File sourceFilesList[]=sourcePathFile.listFiles();
System.out.println("共有"+sourceFilesList.length+"个文件(文件夹)");
//指定要转换的文件所在的目录下,如果有子目录,
//则进入子目录,继续查找word文档并将其转换,
//直到将指定目录下的所有word文档转换完。
//子目录名
String sourceChildPath=new String("");
//保持原来的层次关系,将子目录下的文件存放在新建的子目录中
String destiNationChildPath=new String("");
//检索文件,过滤掉非word文件,通过扩展名过滤
for(int i=0;i<sourceFilesList.length;i++){
//排除掉子文件夹
if(sourceFilesList[i].isFile()){
System.out.println("第"+(i+1)+"个文件:");
//取得文件全名(包含扩展名)
String fileName=sourceFilesList[i].getName();
String fileType=new String("");
//取得文件扩展名
fileType=fileName.substring((fileName.length()-4), fileName.length());
//word2007-2010扩展名为docx
//判断是否为word2007-2010文档,及是否以docx为后缀名
if(fileType.equals("docx")){
System.out.println("正在转换。。。");
//输出word文档所在路劲
System.out.println("目录:"+sourceFilesPath);
//输出word文档名
System.out.println("文件名:"+fileName);
//System.out.println(fileName.substring(0, (fileName.length()-5)));
//核心函数
//启动word
ActiveXComponent app=new ActiveXComponent("Word.Application");
//要转换的文档的全路径(所在文件夹+文件全名)
String docPath=sourceFilesPath+"\\"+fileName;
//转换后的文档的全路径(所在文件夹+文件名)
String othersPath=destinationFilesPath+"\\"+fileName.substring(0,(fileName.length()-5));
//
String inFile=docPath;
String outFile=othersPath;
//
boolean flag=false;
//核心代码
try{
//设置word可见性
app.setProperty("Visible", new Variant(false));
//
Dispatch docs=app.getProperty("Documents").toDispatch();
//打开word文档
Dispatch doc=Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[]{inFile,new Variant(false),new Variant(true)}, new int[1]).toDispatch();
//0:Microsoft Word 97 - 2003 文档 (.doc)
//1:Microsoft Word 97 - 2003 模板 (.dot)
//2:文本文档 (.txt)
//3:文本文档 (.txt)
//4:文本文档 (.txt)
//5:文本文档 (.txt)
//6:RTF 格式 (.rtf)
//7:文本文档 (.txt)
//8:HTML 文档 (.htm)(带文件夹)
//9:MHTML 文档 (.mht)(单文件)
//10:MHTML 文档 (.mht)(单文件)
//11:XML 文档 (.xml)
//12:Microsoft Word 文档 (.docx)
//13:Microsoft Word 启用宏的文档 (.docm)
//14:Microsoft Word 模板 (.dotx)
//15:Microsoft Word 启用宏的模板 (.dotm)
//16:Microsoft Word 文档 (.docx)
//17:PDF 文件 (.pdf)
//18:XPS 文档 (.xps)
//19:XML 文档 (.xml)
//20:XML 文档 (.xml)
//21:XML 文档 (.xml)
//22:XML 文档 (.xml)
//23:OpenDocument 文本 (.odt)
//24:WTF 文件 (.wtf)
//另存为指定格式的文档
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[]{outFile,new Variant(destinationFilesType)}, new int[1]);
//
Variant file=new Variant(false);
//关闭文档
Dispatch.call(doc, "Close",file);
//
flag=true;
}catch(Exception e){
e.printStackTrace();
System.out.println("文档转换失败");
}finally{
app.invoke("Quit",new Variant[]{});
}
System.out.println("转换完毕");
}
//word97-2003扩展名为doc
//判断是否为word2003-2007文档,及是否以doc为后缀名
else if(fileType.equals(".doc")){
System.out.println("正在转换。。。");
//输出word文档所在路劲
System.out.println("目录:"+sourceFilesPath);
//输出word文档名
System.out.println("文件名:"+fileName);
//System.out.println(fileName.substring(0, (fileName.length()-4)));
//核心函数
//启动word
ActiveXComponent app=new ActiveXComponent("Word.Application");
//要转换的文档的全路径(所在文件夹+文件全名)
String docPath=sourceFilesPath+"\\"+fileName;
//转换后的文档的全路径(所在文件夹+文件名)
String othersPath=destinationFilesPath+"\\"+fileName.substring(0,(fileName.length()-4));
//
String inFile=docPath;
String outFile=othersPath;
//
boolean flag=false;
//核心代码
try{
//设置word可见性
app.setProperty("Visible", new Variant(false));
//
Dispatch docs=app.getProperty("Documents").toDispatch();
//打开word文档
Dispatch doc=Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[]{inFile,new Variant(false),new Variant(true)}, new int[1]).toDispatch();
//另存为指定格式的文档
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[]{outFile,new Variant(destinationFilesType)}, new int[1]);
//
Variant file=new Variant(false);
//关闭文档
Dispatch.call(doc, "Close",file);
//
flag=true;
}catch(Exception e){
e.printStackTrace();
System.out.println("文档转换失败");
}finally{
app.invoke("Quit",new Variant[]{});
}
System.out.println("转换完毕");
}
//文档的扩展名不是doc或docx
else{
System.out.println("非word文档");
}
}
//如果是子文件夹,则递归遍历,将所有的word文档转换
else{
//
sourceChildPath=sourceFilesPath;
//该文件是目录
sourceChildPath=sourceChildPath+"\\"+sourceFilesList[i].getName()+"\\";
System.out.println("源文件所在路径:"+sourceChildPath);
//修改目标文件夹,保持原来的层级关系
destiNationChildPath=destinationFilesPath;
destiNationChildPath=destinationFilesPath+"\\"+sourceFilesList[i].getName()+"\\";
System.out.println("转换后文件所在路径"+destiNationChildPath);
//
mkdir(destiNationChildPath);
//递归遍历所有目录,查找word文档,并将其转换
change(sourceChildPath, destiNationChildPath,destinationFilesType);
}
}
System.out.println("所有文档转换完毕");
}
/**
* 用于创建文件夹的方法
* @param mkdirName
*/
public static void mkdir(String mkdirName){
try{
//使用指定的路径创建文件对象
File dirFile = new File(mkdirName);
//
boolean bFile = dirFile.exists();
//已经存在文件夹,操作???提醒是否要替换
if( bFile == true ) {
System.out.println("已经存在文件夹"+mkdirName);
}
//不存在该文件夹,则新建该目录
else{
System.out.println("新建文件夹"+mkdirName);
bFile = dirFile.mkdir();
if( bFile == true ){
System.out.println("文件夹创建成功");
}else{
System.out.println(" 文件夹创建失败,清确认磁盘没有写保护并且空件足够");
System.exit(1);
}
}
}catch(Exception err){
System.err.println("ELS - Chart : 文件夹创建发生异常");
err.printStackTrace();
}finally{

}
}
/**
* 判断某个文件夹是否存在
* @param path
*/
public static boolean isPathExist(String path){
boolean isPathExist=false;
try{
File pathFile = new File(path);
if(pathFile.exists())
isPathExist= true;
else
isPathExist= false;
}catch(Exception err){
err.printStackTrace();
}
return isPathExist;
}
/**
* 主函数
*/
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//源文档所在路径
String sourceFilesPath="";
// String inputSourcePath="";
// boolean sourcePathFlag=true;
// System.out.println("请输入要转换文档所在的文件夹");
// while(sourcePathFlag){
// inputSourcePath=sc.next();
// if(!isPathExist(inputSourcePath))
// System.out.println("源路径不存在,请输入正确的路径");
// else
// sourcePathFlag=false;
// }
// sourceFilesPath=inputSourcePath;
sourceFilesPath="D:\\word";
//目标文档要存放的目录
String destinationFilesPath="";
// String inputdestinationPath="";
// boolean destinationPathFlag=true;
// System.out.println("请输入转换后文档要存放的文件夹");
// while(destinationPathFlag){
// inputdestinationPath=sc.next();
// //目标文件不存在时,是否要提示用户创建文件
// if(!isPathExist(inputdestinationPath))
// System.out.println("目标路径不存在,请输入正确的路径");
// else
// destinationPathFlag=false;
// }
// destinationFilesPath=inputdestinationPath;
destinationFilesPath="D:\\txt";
//选择要转换的类型
int destinationFilesType=0;
int inputNumber=0;
boolean numFlag=true;
System.out.println("您要将word文档转换为哪种文档格式?");
System.out.println("0:doc \t 2:txt \t 8:html \t 9:htm \t 11:xml \t 12:docx \t 17:pdf \t 18:xps");
while(numFlag){
inputNumber=sc.nextInt();
if(inputNumber!=2&&inputNumber!=8&&inputNumber!=9&&inputNumber!=11&&inputNumber!=12&&inputNumber!=17){
System.out.println("您的输入有误,请输入要转换的文档类型前的数字");
}else
numFlag=false;
}
destinationFilesType=inputNumber;
//实行转换
change(sourceFilesPath, destinationFilesPath,destinationFilesType);
//测试各种类型转换
// for(int i=0;i<25;i++){
// destinationFilesType=i;
// System.out.println("文件类型"+destinationFilesType);
// System.out.println("存放目录:"+destinationFilesPath+"\\"+i);
// mkdir(destinationFilesPath+"\\"+i);
// change(sourceFilesPath, destinationFilesPath+"\\"+i,destinationFilesType);
// }
}
}

这个我刚用的。。格式都能带过来的。 你自己再下载个 jacob的包和dll文件

Ⅵ 我想要实现的功能是用java读取word中的自定义图片

建议使用PageOffice很简单就能实现这些。

Ⅶ java 读取word 并识别图片

肯定不是少引用了包,提示你类型不对。这个getImagedataArray这个方法,返回的是int类型,怎么能用数组的方式去取值

Ⅷ java:一个文件夹里里面有很多图片有很多word文件有我要如何读取word文件名,该如何做

可以用过滤器,也可以循环自己判断,如FourQueue 写的那样。
下边是过滤器的例子。
------------------------------------------------------------------------------------
import java.io.File;
import java.io.FilenameFilter;

public class FileDoc {

public static void main(String[] args) {
File root = new File("D:\\test");
File[] files = root.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
if (name.toLowerCase().endsWith("doc")) {
// 2003 word
return true;
}
if (name.toLowerCase().endsWith("docx")) {
// 2007 word
return true;
}
return false;
}
});

for (int i = 0; i < files.length; i++) {
System.out.println(files[i].getPath());
}
}

}

阅读全文

与java读取word图片相关的资料

热点内容
助教老师卡通图片大全女生 浏览:764
男生动漫头像海王图片 浏览:496
女生洗碗的图片 浏览:534
大脸女生笑的图片 浏览:560
狂人动漫图片 浏览:302
女生短发动漫微信头像图片 浏览:94
戴帽子女生简笔画图片 浏览:849
短发男学生发型图片 浏览:907
土豪图片男生活照现实 浏览:333
电脑如何淡化ppt图片 浏览:643
自己在家如何做个假棒图片 浏览:519
藏族人物图片简单 浏览:54
金所泫可爱的图片 浏览:159
陆军绘画图片简单枪 浏览:553
蓝田钟灵毓秀高清图片 浏览:935
女生睡觉漫画图片 浏览:116
word内图片打印出来缺失 浏览:175
word变白图片 浏览:996
苗条运动女生图片 浏览:57
挥手再见动漫图片 浏览:501