社区
Web 开发
帖子详情
请问各位大师:怎样用Java、POI技术来读取Word文档,并把Word文档的原来格式完整地显示在页面上?谢谢,在线恭候。
andy20020202
2009-06-03 09:24:47
请问各位大师:怎样用Java、POI技术来读取Word文档,并把Word文档的原来格式完整地显示在页面上?谢谢,在线恭候。
...全文
966
14
打赏
收藏
请问各位大师:怎样用Java、POI技术来读取Word文档,并把Word文档的原来格式完整地显示在页面上?谢谢,在线恭候。
请问各位大师:怎样用Java、POI技术来读取Word文档,并把Word文档的原来格式完整地显示在页面上?谢谢,在线恭候。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
F1226759
2012-10-27
打赏
举报
回复
package com.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream.GetField;
import org.apache.poi.hpbf.model.MainContents;
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.Range;
/**
*
* @author 张廷 下午
*
*/
public class WordToHtml {
/**
* 回车符ASCII码
*/
private static final short ENTER_ASCII = 13;
/**
* 空格符ASCII码
*/
private static final short SPACE_ASCII = 32;
/**
* 水平制表符ASCII码
*/
private static final short TABULATION_ASCII = 9;
private String htmlText = "";
/**
* 读取每个文字样式
*
* @param fileName
* @throws Exception
*/
public void getWordAndStyle(String fileName) throws Exception {
FileInputStream in = new FileInputStream(new File(fileName));
HWPFDocument doc = new HWPFDocument(in);
// 取得文档中字符的总数
int length = doc.characterLength();
// 创建图片容器
PicturesTable pTable = doc.getPicturesTable();
htmlText = "<html><head><title>" + doc.getSummaryInformation().getTitle() + "</title></head><body>";
// 创建临时字符串,好加以判断一串字符是否存在相同格式
String tempString = "";
for (int i = 0; i < length - 1; i++) {
// 整篇文章的字符通过一个个字符的来判断,range为得到文档的范围
Range range = new Range(i, i + 1, doc);
CharacterRun cr = range.getCharacterRun(0);
if (pTable.hasPicture(cr)) {
// 读写图片
this.readPicture(pTable, cr);
this.readPicture(pTable, cr);
} else {
Range range2 = new Range(i + 1, i + 2, doc);
// 第二个字符
CharacterRun cr2 = range2.getCharacterRun(0);
// 当前字符
char currentChar = cr.text().charAt(0);
// 判断是否为回车符
if (currentChar == ENTER_ASCII)
tempString += "<br/>";
// 判断是否为空格符
else if (currentChar == SPACE_ASCII)
tempString += " ";
// 判断是否为水平制表符
else if (currentChar == TABULATION_ASCII)
tempString += " ";
// 比较前后2个字符是否具有相同的格式
boolean flag = compareCharStyle(cr, cr2);
String fontStyle = "<span style='font-family:" + cr.getFontName() + ";font-size:" + cr.getFontSize() / 2 + "pt;";
if (cr.isBold())
fontStyle += "font-weight:bold;";
if (cr.isItalic())
fontStyle += "font-style:italic;";
if (flag && i != length - 2)
tempString += currentChar;
else if (!flag) {
htmlText += fontStyle + "'>" + tempString + currentChar + "</span>";
tempString = "";
} else
htmlText += fontStyle + "'>" + tempString + currentChar + "</span>";
}
htmlText += "</body></html>";
this.writeFile(htmlText);
}
}
}
cheniqit1
2011-03-09
打赏
举报
回复
POI提供对Word的DOC格式文件的读取。但在它的发行版本中没有发布对Word支持的模块,需要另外下载一个POI的扩展的Jar包。用户可以到 http://www.ibiblio.org/maven2/org/textmining/tm-extractors/0.4/下载
参考地址
http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380143fd3d1027fa3c215cc791a061b2da4ac2755515e8e8061375ff21c41abb665346c523db091cb8c4adfbc94282d8a2d3e7316864010d018aacc4238d565cd1abfa05bbae1e733e3b9a2d7c82550dd220f6df3f39c5b7051972fa6033093b1e942022b13ad9c43728f2f&p=9957da15d9c747b42aa9c7710b0a&user=baidu&fm=sc&query=POI%B6%C1%C8%A1word%B8%F1%CA%BD&qid=e96f367c08587475&p1=4
windwordman
2011-03-09
打赏
举报
回复
经各方面调查确实不能取出WORD格式.要导出WORD只能通过HTML的方式建立WORD文档
tian_xuezhi
2009-09-12
打赏
举报
回复
你去读一下POI官方网站吧。POI并不能深入支持WORD,只能把WORD的基本内容读出来,什么格式之类都没法读取,更不用说表格、图片之类的东西。
因为做这个事情的人已经被微软挖走了。
wulin5050
2009-09-12
打赏
举报
回复
我也想知道
zings
2009-08-11
打赏
举报
回复
我也遇到这个问题 。。。 郁闷。。。怎么能让word中的格式不变的读取出来呢???楼主解决了给个方法啊!!!!我读出来的都没有格式。。。。
andy20020202
2009-06-03
打赏
举报
回复
[Quote=引用 5 楼 JackRui2008 的回复:]
利用POI在导出excel的时候用
response.setContentType("application/vnd.ms-excel");
导出word的时候用
response.setContentType("application/msword");
[/Quote]
[color=#800080]
不过,还是谢谢美女的帮助,难得见到一大美女!!![/
color]
andy20020202
2009-06-03
打赏
举报
回复
这个不行吧,美女,这个好像是下载吧?
JackRui2008
2009-06-03
打赏
举报
回复
利用POI在导出excel的时候用
response.setContentType("application/vnd.ms-excel");
导出word的时候用
response.setContentType("application/msword");
andy20020202
2009-06-03
打赏
举报
回复
这个方法我试过了,但读取出来的仍然只是纯文本格式 的,没有word本身的格式。
sprite26
2009-06-03
打赏
举报
回复
public static String readDoc(String doc) throws Exception {
// 创建输入流读取DOC文件
FileInputStream in = new FileInputStream(new File(doc));
WordExtractor extractor = null;
String text = null;
// 创建WordExtractor
extractor = new WordExtractor();
// 对DOC文件进行提取
text = extractor.extractText(in);
return text;
}
public static void main(String[] args) {
try{
String text = WordReader.readDoc("c:/test.doc");
System.out.println(text);
}catch(Exception e){
e.printStackTrace();
}
}
网上搜了一个,你先看下能用不,俺没试过,http://www.ibiblio.org/maven2/org/textmining/tm-extractors/0.4/还要添加个这个扩展包
andy20020202
2009-06-03
打赏
举报
回复
谢谢关注
可以读取的,继续关注。
sprite26
2009-06-03
打赏
举报
回复
POI无法读取word文档,只能读取excel,JXL好像EXCEL和word都可以读取
andy20020202
2009-06-03
打赏
举报
回复
继续等待高手指点呀/
AI算力时代的先进封装:Chiplet、HBM与异构集成的产业机会.docx
AI算力时代的先进封装:Chiplet、HBM与异构集成的产业机会
Java
Web程序设计作业答案.rar
源码下载地址: https://pan.quark.cn/s/8d2c461c797c
Java
Web程序设计构成了掌握Web交互式应用程序开发的核心领域,对于初学者来说,精通这一
技术
具有决定性意义。在“
Java
Web程序设计(第三版)作业答案”中,我们可以预期获得针对该教材习题的一系列深入解析,从而协助学习者强化知识体系。
Java
Web所包含的
技术
组件涵盖了Servlet、JSP(
Java
Server Pages)、JDBC(
Java
Database Connectivity)以及各类框架如Spring MVC、Struts等。Servlet是
Java
平台提供的一种扩展服务器功能的接口,能够处理HTTP请求并生成相应的反馈。JSP则是一种用于构建动态网页的工具,它支持开发者将HTML代码与
Java
代码进行整合编写,从而简化了Web应用程序的开发流程。 作业答案通常会涉及以下几个核心内容: 1. **Servlet基础**:可能包含Servlet生命周期、init(), service(), destroy()方法的应用,以及如何在web.xml文件中设定Servlet的映射关系。 2. **JSP基础**:JSP的九大内置对象,如request、response、session、application等的使用,以及EL(Expression Language)和JSTL(
Java
Server Pages Standard Tag Library)的实际操作。 3. **HTTP协议理解**:GET和POST请求方法的差异,请求头与响应头的应用,以及会话管理的概念阐释。 4. **JDBC数据库操作**:与数据库建立连接,执行SQL指令,处理查询结果集,以及...
斐讯K2固件合集-下载即用.zip
源码链接: https://pan.quark.cn/s/a4b39357ea24 斐讯K2是一款广受用户青睐的无线路由器,其运行表现稳定且具备较高的可操作性,在DIY爱好者群体中拥有极高的声誉。本资料将系统性地阐述斐讯K2的固件刷机方法及其关联的
技术
要点。固件升级是路由器爱好者改善设备性能、扩展功能的一种普遍手段,经由替换出厂固件,能够达成更加个性化的网络配置、增强安全防护等目标。斐讯K2固件资源库涵盖了多种知名的非官方固件,诸如Tomato Pheonix 不死鸟、高恪、PandoraBox 潘多拉等,这些固件均具备独特的优势,能够适配不同用户的需求。 1. Tomato Pheonix 不死鸟:Tomato是一款立足于Linux的开源固件,以其精巧、高效而备受推崇。不死鸟版本是专门为华硕及斐讯路由器优化的分支,提供了卓越的QoS(服务质量)配置、详尽的图表监控以及便捷的固件升级途径。对于那些需要精准调控带宽和监测网络状态的用户而言,这是一个理想的选项。 2. 高恪:高恪固件是OpenWrt的定制化版本,着重于操作的便捷性和运行的可靠性,特别适合对路由器操作不甚熟悉的用户群体。它提供了一些实用的功能,例如内置的广告屏蔽、快速测速工具等,同时保留了OpenWrt的适应性。 3. PandoraBox 潘多拉:潘多拉盒是另一款基于OpenWrt的固件,它以丰富的插件库和强大的自定义潜力而闻名。用户能够依据个人需求安装各类插件,实现更多功能,如远程接入、DDNS(动态域名解析服务)等。 4. 官方固件的纯净版本与定制版本:官方固件通常更侧重于稳定性,纯净版意味着未预置额外的应用或服务,适合注重稳定性的用户。定制版则可能包含了制造商的特色功能或优...
docker use CMD or ENTRY
POI
NT to start multiple services simultaneously
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在django框架中集成了celery功能,针对在启动django应用程序时如何使celery服务同步运行的问题,可通过ENTRY
POI
NT指令来实现启动。具体步骤如下:一、创建Dockerfile文件,基础镜像选用centos:7版本,执行localedef命令配置中文语言环境,设置环境变量LC_ALL为zh_CN.UTF-8,将项目代码复制到指定目录,并赋予运行脚本执行权限,最后安装项目所需依赖包。$ FROM centos:7 $ RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 $ ENV LC_ALL zh_CN.UTF-8 $ COPY ./hrms $CODE_DIR/hrms/ $ COPY ./run $CODE_DIR/run/ $ RUN chmod a+x $CODE_DIR/run/* $ RUN pip3 install -r $CODE_DIR/hrms/requirements.txt
Web 开发
81,110
社区成员
341,726
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章