使用poi对word进行操作的问题 想通过poi输出一个doc文档想对word的一些格式进行定制并且可以插入书签并可以生成目录请问各位如何处理???poi可以实现吗??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该是可以的,你看看这篇文章: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)); } } } 不确定for循环层数转递归问题。 java怎样实现视频播放 用java如何获得本机IP地址? 做b/s项目不知道连接池,连接池优化 java与数据库联接问题 对SUN的网站表示强烈不满! 有两小问题请教一下。 我响应键盘的事件,出错了,不知道如何解决???帮我看看!!! linux下jbuilder4的版本控制问题 求助,将下面程序中的查询语句转换到存储过程中实现 Comparator()太难了,谁能用简单的话让我明白阿!! 将JAVA程序弄成exe可执行程序
http://blog.csdn.net/wzwfly/archive/2007/06/09/1645046.aspx
也曾经查过poi的资料,功能很强大,对word和ecexl的支持都很好poi完全可以实现你的要求
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));
}
}
}