日期:2014-05-20  浏览次数:20787 次

使用poi对word进行操作的问题
想通过poi输出一个doc文档
想对word的一些格式进行定制
并且可以插入书签
并可以生成目录

请问各位如何处理???
poi可以实现吗???


------解决方案--------------------
应该是可以的,你看看这篇文章:
http://blog.csdn.net/wzwfly/archive/2007/06/09/1645046.aspx
------解决方案--------------------
我没处理过word,但是处理过excel,用的是jxl.jar


也曾经查过poi的资料,功能很强大,对word和ecexl的支持都很好

poi完全可以实现你的要求
------解决方案--------------------
import java.io.*;
import java.util.*;
 
import org.apache.poi.poifs.filesystem.*;
import org.apache.poi.util.*;
import wfc.service.log.*;
import wfc.service.util.*;
 
public class WordParser
extends IParser {
 
/**
* 解析文档, 获得文档正文
* @param content 原始文档内容
* @return 文档正文
*/
public String parseFromContent(String content) {
InputStream stream = new ByteArrayInputStream(content.getBytes());
return parse(stream);
}
 
/**
* 解析文档, 获得文档正文
* @param filename 文件名称
* @return 文档正文
*/
public String parseFromFile(String filename) {
try {
InputStream stream = new FileInputStream(filename);
return parse(stream);
}
catch (FileNotFoundException ex) {
Log.error(ex);
return null;
}
}
 
private String parse(InputStream stream) {
try {
POIFSFileSystem fs = new POIFSFileSystem(stream);
DirectoryEntry rootEntry = fs.getRoot();
StringWriter writer = new StringWriter();
recurse(rootEntry, writer);
return new String(writer.getBuffer());
}
catch (IOException ex) {
Log.error(ex);
return null;
}
}
 
private void recurse(Entry entry, StringWriter writer) throws IOException {
if (entry instanceof DirectoryEntry) {
DirectoryEntry dirEntry = (DirectoryEntry) entry;
for (Iterator iter = dirEntry.getEntries(); iter.hasNext(); ) {
Entry e = (Entry) iter.next();
recurse(e, writer);
}
}
else if (entry instanceof DocumentEntry &&
"WordDocument".equals(entry.getName())) {
DocumentEntry docEntry = (DocumentEntry) entry;
DocumentInputStream dis = new DocumentInputStream(docEntry);
byte[] by = StreamHelper.toByteArray(dis);
writer.write(StringUtil.getFromUnicodeHigh(by));
}
}
 
}