POI,不用多做解释,在最近的一个CMS项目中,需要读取远程的WORD文件,然后直接发布成HTML内容。word文件中包含的图片必须保存到指定的目录。
下面就是我用来处理word文件的类:
MSWordExtractor 类 写道
package com.daren.poi.word;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.model.PicturesTable;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Picture;
import org.apache.poi.hwpf.usermodel.Range;
public class MSWordExtractor
{
private HWPFDocument msWord;
private HttpURLConnection connection;
private InputStream inputStream;
/*
* 加载HTTP形式的Word文件
*
* */
public void initHttpExtractor(String fileurl)
{
try
{
URL url= new URL(fileurl);
connection=(HttpURLConnection)url.openConnection();
connection.connect();
inputStream=connection.getInputStream();
msWord = new HWPFDocument(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 加载本地的Word文件
*
* */
public void initLocalExtractor(String filepath)
{
try
{
inputStream = new FileInputStream(filepath);
msWord = new HWPFDocument(inputStream);
}
catch (Exception e)
{
e.printStackTrace();
}
}
/*
* 读取完word资源后,释放应该释放的对象
*
* */
public void destory()
{
try
{
if(connection!=null)
{
connection.disconnect();
}
if(inputStream!=null)
{
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 获取所有的段落文字
*
* */
public String[] getParagraphTexts()
{
Range range = msWord.getRange();
int numParagraph = range.numParagraphs();
String[] paragraphs = new String[numParagraph];
for (int i = 0; i < numParagraph; i++)
{
Paragraph p = range.getParagraph(i);
paragraphs[i]= new String(p.text());
}
return paragraphs;
}
/*
* 获取Word的所有文字
*
* */
public String getMSWordText()
{
return msWord.getRange().text();
}
//将图片保存到指定的目录,并且将图片内容替换成图片的名字
public void extractImages(String directory)
{
try
{
PicturesTable pTable = msWord.getPicturesTable();
int numCharacterRuns = msWord.getRange().numCharacterRuns();
for (int i = 0; i < numCharacterRuns; i++)
{
CharacterRun characterRun = msWord.getRange().getCharacterRun(i);
if (pTable.hasPicture(characterRun))
{
Picture pic = pTable.extractPicture(characterRun, false);
String fileName = pic.suggestFullFileName();
OutputStream out = new FileOutputStream(new File(directory+ File.separator + fileName));
pic.writeImageContent(out);
characterRun.replaceText(characterRun.text(), fileName);
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
String httpfile="http://bus.vodone.com:8080/ids/test.doc";
MSWordExtractor mshttp=new MSWordExtractor();
mshttp.initHttpExtractor(httpfile);
System.out.println("[===]\n"+mshttp.getMSWordText());
mshttp.extractImages("C:\\");
System.out.println("[===]\n"+mshttp.getMSWordText());
mshttp.destory();
String localfile="c:\\test.doc";
MSWordExtractor lochttp=new MSWordExtractor();
lochttp.initLocalExtractor(localfile);
System.out.println("[===]\n"+lochttp.getMSWordText());
lochttp.extractImages("C:\\");
System.out.println("[===]\n"+lochttp.getMSWordText());
mshttp.destory();
}
}
分享到:
相关推荐
综上所述,这个项目展示了如何利用Java的开源库和标准API来构建一个独立且可移植的跨平台打印解决方案,能够处理多种文件格式,包括PDF、Word文档和图片。这对于需要在不同环境中进行文档打印的Java应用来说,具有很...
标题中的"poi-ooxml3.9.zip"指的是Apache POI项目的一个特定版本,即3.9版,它是一个...这些文件不仅包括了运行时所需的库,还包含了构建和版本控制的相关信息,对于任何使用Apache POI的Java项目来说都是不可或缺的。
对于Apache POI库,它是一个广泛使用的API,用于处理Microsoft Office格式的文件,包括Word(.doc和.docx)。以下是使用Apache POI读取Word的基本步骤: 1. 引入Apache POI依赖: ```xml <!-- Maven --> ...
Apache POI是Java领域的一个流行库,用于处理Microsoft Office格式的文件,包括Word。在Android环境下,由于内存限制和性能考虑,使用Apache POI可能需要进行一些优化,例如分块读取大文件,避免一次性加载整个文档...
5. 保存结果:将生成的Word文档保存到本地或远程服务器。 在实际应用中,这个过程可以进一步封装成一个服务或工具,以方便多次复用。例如,可以创建一个Web接口,接收XML数据和FTL模板,然后返回生成的Word文档。...
考虑到安全性和性能,文件预览通常不会直接发送整个文件,而是发送文件的一部分或者文件的元数据。例如,对于大文件,可以先发送文件大小,然后分块传输;对于图片,可能仅发送缩略图。 最后,标签“Java 文件预览...
这通常涉及下载远程图片或处理本地资源,然后将其转换为PDF兼容的位图格式。 8. **PDF输出**:生成PDF后,需要将其保存到Android设备的存储空间,可以是内部存储或者外部SD卡,并提供一个文件路径供用户访问或分享...
在IT领域,"Office在线预览"是一种常见需求,它允许用户无需下载文件即可在Web浏览器中查看Word、Excel、PowerPoint和PDF等格式的文档。这种功能在协作、分享和远程工作环境中尤为实用,因为它提高了效率并减少了...
6. **文件处理**:对于Word和Excel这类文件,系统可能使用Apache POI库来读写和解析。POI是一个开源项目,提供了处理Microsoft Office格式文件的能力。 7. **安全性**:系统应考虑防止SQL注入、XSS攻击等安全问题,...
1. **Apache POI**:Apache POI 是一个广泛使用的开源库,专门用于处理Microsoft Office格式的文件,包括docx。它提供了HWPFOI(用于Word)API,允许开发者直接操作文档的各个元素,如段落、表格、样式等。使用POI...
接下来,运行`ReadOraacleToExcel.jar`这个Java应用程序,它会利用包含的库文件来执行表结构的导出操作。以下是压缩包中包含的一些关键库文件及其作用: 1. **ooxml-schemas-1.0.jar**:这是处理Microsoft Office ...
标题“新增LIB”暗示了这个压缩包文件包含了一系列与编程相关的库文件,这些库文件是开发者在进行软件开发时常用到的外部依赖。描述中提到的“博文链接”可能提供了更多关于如何使用这些库的详细信息,但由于我们...
本文将详细介绍如何使用Java实现这一功能,包括利用第三方工具和自行开发的方法。 首先,让我们来理解标题和描述。"offoce文档转成pdf"是指将Microsoft Office创建的文件(如Word、Excel、PowerPoint)转换为PDF...
同时,服务器端通常采用高效的文档解析库,如Apache POI、OpenOffice API等,来处理文档的存储和转换。 二、在线编辑的实现流程 1. **文档加载**:用户通过浏览器访问在线编辑平台,选择要编辑的文档。服务器将...
- **含义**: 导出Word文件时,不支持每个Sheet具有不同的页面设置。 - **解决方案**: - 统一页面设置。 - 分别导出每个Sheet。 #### 25. **邮件配置参数不正确** - **错误代码**: 1204 - **含义**: 邮件发送...
4. 文件处理:利用Apache POI、PDFBox等库处理不同格式的作业文件。 5. 云服务:如阿里云、AWS等,提供稳定的运行环境和大容量的存储空间。 6. 安全技术:OAuth2、JWT等实现用户身份验证和授权,HTTPS保障通信安全。...
这通常需要对接OpenOffice或LibreOffice等开源办公软件的API,或者使用专门的文件处理库,如Apache POI(处理Microsoft Office格式)。 6. **安全考虑**:在处理敏感的办公文档时,必须考虑安全性问题。包括但不...