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真不知道!
[其他解释]
office的核心代码没有开源,所以所有的插件都不能非常完美的读取出来,java中JTextPane到是可以显示图片,但是还是会出现乱码的情况,很烦人只能慢慢摸索,api是英文的很吃力
[其他解释]
windows下,你可能需要jacob
[其他解释]
前几天上课我们老师讲要按字节读取,在转换成想要的格式,自己没试过,希望有帮助
[其他解释]
学习, EXCEL倒是可以当数据库一样读出来。。 话说 API不是有中文的么。。
[其他解释]
我知道可以显示图片,我也弄出来过,但是没有图片的时候还是会出现乱码的情况
这个跟什么有关,比喻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();//获取图表对象
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里面的字体样式也没有去弄