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

java读取word文档
在java中在JTextarea中显示word的内容,用到poi
但是在textarea中显示的时候乱码了,textarea中是不是好像不能显示图片,但是也不能显示文字吗,好像可以用Jtextpane显示,
但是现在做了一大半,求高人指导下思路
------最佳解决方案--------------------
乱码都是由于出入编码不一致导致的,你可以在各个关键步骤打印出编码格式,就知道是哪里的问题了
------其他解决方案--------------------
看了一楼用的两个类,我不信你这样能读Word文档。Javadoc中写到,FileReader is meant for reading streams of characters. Word文档不是文本格式,所以你直接用FileReader根本不行。BufferedReader这个类也是读文本的,比如说你关键的那句str=br.readLine(),Javadoc里面这么写的:

public String readLine()
Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed. 

Word文档遵守这样的格式?? 不可能。
------其他解决方案--------------------
我以前关注这个问题,在网上搜了下,说word的代码不开源所以读不到,但是excel中的内容倒是可以读取
------其他解决方案--------------------
你是编码的问题,JtextPane可以显示图片,比如qq中的显示表情,java中可以用jtextPane实现
------其他解决方案--------------------
图片显示要用JLabel。
JTextarea是可以显示文字的。
word和txt没什么区别,都是用输入输出流读取。

String s="";
fr=new FileReader("src/com/briup/ch11/wtmpx");
br=new BufferedReader(fr);
String str="";
while((str=br.readLine())!=null){
s+=str; }
br.close();

然后把s在JTextarea中输出就行。
你提到了乱码,那是格式转换的问题,不知道你word中用的是什么格式,

br=new BufferedReader
(new InputStreamReader
(new FileInputStream(file),"GBK"));//file指的是你文件路径,GBK你的文件的格式




------其他解决方案--------------------
要连图片也抓取?这个还没有用过。
------其他解决方案--------------------
学习!帮顶!只知道Excel的可以读取,wrd真不知道!
------其他解决方案--------------------
引用:
我以前关注这个问题,在网上搜了下,说word的代码不开源所以读不到,但是excel中的内容倒是可以读取

office的核心代码没有开源,所以所有的插件都不能非常完美的读取出来,java中JTextPane到是可以显示图片,但是还是会出现乱码的情况,很烦人只能慢慢摸索,api是英文的很吃力
------其他解决方案--------------------
windows下,你可能需要jacob
------其他解决方案--------------------
前几天上课我们老师讲要按字节读取,在转换成想要的格式,自己没试过,希望有帮助
------其他解决方案--------------------
学习,  EXCEL倒是可以当数据库一样读出来。。   话说 API不是有中文的么。。
------其他解决方案--------------------
引用:
你是编码的问题,JtextPane可以显示图片,比如qq中的显示表情,java中可以用jtextPane实现

我知道可以显示图片,我也弄出来过,但是没有图片的时候还是会出现乱码的情况
这个跟什么有关,比喻word里面有标题
------其他解决方案--------------------
public void read() throws IOException{
File f = new File(ReaderListener.path);
        InputStream in =new FileInputStream(f);
        HWPFDocument msWord=new HWPFDocument(in);
        Range range = msWord.getRange();
        PicturesTable pTable = msWord.getPicturesTable();//获取图表对象