在java中在JTextarea中显示word的内容,用到poi
但是在textarea中显示的时候乱码了,textarea中是不是好像不能显示图片,但是也不能显示文字吗,好像可以用Jtextpane显示,
但是现在做了一大半,求高人指导下思路

解决方案 »

  1.   

    图片显示要用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你的文件的格式
      

  2.   

    看了一楼用的两个类,我不信你这样能读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文档遵守这样的格式?? 不可能。
      

  3.   

    我以前关注这个问题,在网上搜了下,说word的代码不开源所以读不到,但是excel中的内容倒是可以读取
      

  4.   

    office的核心代码没有开源,所以所有的插件都不能非常完美的读取出来,java中JTextPane到是可以显示图片,但是还是会出现乱码的情况,很烦人只能慢慢摸索,api是英文的很吃力
      

  5.   

    你是编码的问题,JtextPane可以显示图片,比如qq中的显示表情,java中可以用jtextPane实现
      

  6.   

    学习,  EXCEL倒是可以当数据库一样读出来。。   话说 API不是有中文的么。。
      

  7.   

    我知道可以显示图片,我也弄出来过,但是没有图片的时候还是会出现乱码的情况
    这个跟什么有关,比喻word里面有标题
      

  8.   

    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();//获取图表对象
            int numCharacterRuns = msWord.getRange().numCharacterRuns();//获取文档的段落
            @SuppressWarnings("rawtypes")
    //ArrayList content = new ArrayList(); 
            byte[] content = null;
            for (int i = 0; i < numCharacterRuns; i++) {
             //CharacterRun这个类表示一个文本运行,有着共同的属性。
                CharacterRun characterRun = msWord.getRange().getCharacterRun(i);
                //判断,是图片则把图片位置替换为image标签,再把图片输出到指定位置
                if (pTable.hasPicture(characterRun)) {
                    Picture pic = pTable.extractPicture(characterRun, true);//选取ptable中picture
                    //试建议的文件名:在“数据”流和扩展,试图确定图片的内容从第一个字节的十六进制表示的图像结构失调。
                    content = pic.getContent();//获取图片内容的字节数组
                    ReaderGUI.text.insertIcon(new ImageIcon(content));
                } else {//纯文本则直接拼接
                 ReaderGUI.text.replaceSelection(characterRun.text()+"\n");
                }//System.out.println(text);
            }
            //ReaderGUI.text.replaceSelection(range.text());
            System.out.println(content.length);
            in.close();
        }
    贴出来,就是word里面的图片的格式有限制(.png的可以),这里没有考虑word里面的表格,word里面的字体样式也没有去弄
      

  9.   

    楼主,怎么用jtextPane html格式设置行距,字间距呢