java 读取 doc poi读取word中的报表(转)
java 读取 doc poi读取word中的表格(转)poi读取word中的表格博客分类:?javaApacheExcelVBA单元测试JNIJaka
java 读取 doc poi读取word中的表格(转)
poi读取word中的表格博客分类:?javaApacheExcelVBA单元测试JNIJakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API。在网上见到好多通过poi读取excel的文章,读写也很方便,和jxl有的一比。在这里,主要是poi对word中的表格数据读取。
具体见代码
Java代码??
- import?java.io.File;??
- import?java.io.FileInputStream;??
- import?java.io.FileNotFoundException;??
- ??
- import?org.apache.poi.hwpf.HWPFDocument;??
- import?org.apache.poi.hwpf.usermodel.Paragraph;??
- import?org.apache.poi.hwpf.usermodel.Range;??
- import?org.apache.poi.hwpf.usermodel.Table;??
- import?org.apache.poi.hwpf.usermodel.TableCell;??
- import?org.apache.poi.hwpf.usermodel.TableIterator;??
- import?org.apache.poi.hwpf.usermodel.TableRow;??
- ??
- import?java.io.File;?????
- import?java.io.FileInputStream;?????
- import?java.io.InputStream;?????
- ????
- import?org.apache.poi.POIXMLDocument;?????
- import?org.apache.poi.POIXMLTextExtractor;?????
- import?org.apache.poi.hwpf.extractor.WordExtractor;?????
- import?org.apache.poi.openxml4j.opc.OPCPackage;?????
- import?org.apache.poi.xwpf.extractor.XWPFWordExtractor;????
- ??
- ??
- import?org.apache.poi.poifs.filesystem.POIFSFileSystem;??
- ??
- public?class?ExportDocImpl??
- {??
- ????public?void?testWord(){??
- ????????try{??
- ????????????FileInputStream?in?=?new?FileInputStream("D:\\sinye.doc");//载入文档??
- ???????????POIFSFileSystem?pfs?=?new?POIFSFileSystem(in);?????
- ????????????HWPFDocument?hwpf?=?new?HWPFDocument(pfs);?????
- ????????????Range?range?=?hwpf.getRange();//得到文档的读取范围??
- ????????????TableIterator?it?=?new?TableIterator(range);??
- ???????????//迭代文档中的表格??
- ????????????while?(it.hasNext())?{?????
- ????????????????Table?tb?=?(Table)?it.next();?????
- ????????????????//迭代行,默认从0开始??
- ????????????????for?(int?i?=?0;?i?<?tb.numRows();?i++)?{?????
- ????????????????????TableRow?tr?=?tb.getRow(i);?????
- ????????????????????//迭代列,默认从0开始??
- ????????????????????for?(int?j?=?0;?j?<?tr.numCells();?j++)?{?????
- ????????????????????????TableCell?td?=?tr.getCell(j);//取得单元格??
- ????????????????????????//取得单元格的内容??
- ????????????????????????for(int?k=0;k<td.numParagraphs();k++){?????
- ????????????????????????????Paragraph?para?=td.getParagraph(k);?????
- ????????????????????????????String?s?=?para.text();?????
- ????????????????????????????System.out.println(s);??
- ????????????????????????}?//end?for??????
- ????????????????????}???//end?for??
- ????????????????}???//end?for??
- ????????????}?//end?while??
- ????????}catch(Exception?e){??
- ????????????e.printStackTrace();??
- ????????}??
- ????}//end?method??
- ??????
- ??????
- ???????????public?void?testWord1(){??
- ???????????try?{?????
- ????????????//word?2003:?图片不会被读取?????
- ????????????InputStream?is?=?new?FileInputStream(new?File("D:\\sinye.doc"));?????
- ??????????????????WordExtractor?ex?=?new?WordExtractor(is);?????
- ??????????????????String?text2003?=?ex.getText();?????
- ??????????????????System.out.println(text2003);?????
- ????????????//word?2007?图片不会被读取,?表格中的数据会被放在字符串的最后?????
- ????????????OPCPackage?opcPackage?=?POIXMLDocument.openPackage("D:\\sinye.doc");?????
- ??????????????????POIXMLTextExtractor?extractor?=?new?XWPFWordExtractor(opcPackage);?????
- ??????????????????String?text2007?=?extractor.getText();?????
- ??????????????????System.out.println(text2007);?????
- ?????????????????
- ????????}?catch?(Exception?e)?{?????
- ??????????????????e.printStackTrace();?????
- ????????}???
- ????}??
- }??
?
分享到:?
?
jacob操作word excel?|?jxl读写excel- 2010-02-05 10:53
- 浏览 2213
- 评论(8)
- 论坛回复 /?浏览?(8 / 7316)
- 收藏
- 分类:编程语言
- 相关推荐
评论8 楼?wangyu1221?2011-01-22???引用我孤陋寡闻了,原来poi还能读word……我都只用poi来写excel的报表7 楼?苹果超人?2011-01-21???引用如果文档的前面有一段文字,下面才是表格,poi能直接定位到表格吗?6 楼?Mr.Cheney?2010-08-26???引用
?请问 :读取出来的表格里面的内容,都是没有格式的,如何解决 区分出来主栏 宾栏 公共区 数据区。 愁 着呢 还有读取图片5 楼?sinye?2010-04-06???引用4 楼?renyy?2010-04-04???引用Lz你好,在使用你事例代码时发现如果表格中数据不是中文时在输出时为出现“”这种不能识别的字符,请问有没有解决方案呢?例如,有一个2行2列的表格,数据如下:?
aa中文没问题?
bbGC231?
输出为? aa.中文没问题..bb.GC231?
GC231后面的标志怎么处理呢?(它的值不是特定的)?
3 楼?lkj107?2010-02-24???引用poi之前好一阵没有人维护word部分了,apache的poi介绍也在招poi的维护,后来看到支持2007了,能够满足一些很基本的功能
介绍说因为word不是开源的,建议学习openOffice的代码再去帮apache做开发2 楼?shappy1978?2010-02-09???引用应该说基本够用了,起码基础的数据都解析出来了,需要我们在上面再努力一把。
2007的支持就相当弱了,除了表格没定位,修订内容没定位,宏替换处理的不好还有相当多的问题,看源码里面相当多的todo就知道了1 楼?zcy860511?2010-02-05???引用曾经为一个小公司做一个生成word的项目,当时发现了POI,但是经过测试功能完全不够用,所以没有使用,最后使用的JNI实现VBA本地调用。?
很久没关注这个项目了,不知道更新的怎么样了,看楼主的写法似乎POI更新了?额。。。有空去看看这个项目怎么样了