Java 利用poi 可以直接读取word中的表格保持样式生成新的word么?
发布网友
发布时间:2022-04-23 05:05
我来回答
共1个回答
热心网友
时间:2023-09-22 00:02
1.读取word
2003及word
2007需要的jar包
读取
2003
版本(.doc)的word文件相对来说比较简单,只需要
poi-3.5-beta6-20090622.jar
和
poi-scratchpad-3.5-beta6-20090622.jar
两个
jar
包即可,
而
2007
版本(.docx)就麻烦多,我说的这个麻烦不是我们写代码的时候麻烦,是要导入的
jar
包比较的多,有如下
7
个之多:
1.
openxml4j-bin-beta.jar
2.
poi-3.5-beta6-20090622.jar
3.
poi-ooxml-3.5-beta6-20090622.jar
4
.dom4j-1.6.1.jar
5.
geronimo-stax-api_1.0_spec-1.0.jar
6.
ooxml-schemas-1.0.jar
7.
xmlbeans-2.3.0.jar
其中
4-7
是
poi-ooxml-3.5-beta6-20090622.jar
所依赖的
jar
包(在
poi-bin-3.5-beta6-20090622.tar.gz
中的
ooxml-lib
目录下可以找到)。
2.换行符号
硬换行:文件中换行,如果是键盘中使用了"enter"的换行。
软换行:文件中一行的字符数容量有限,当字符数量超过一定值时,会自动切到下行显示。
对程序来说,硬换行才是可以识别的、确定的换行,软换行与字体大小、缩进有关。
3.读取的注意事项
值得注意的是:
POI
在读取不会读取
word
文件中的图片信息;
还有就是对于
2007
版的
word(.docx),
如果
word
文件中有表格,所有表格中的数据都会在读取出来的字符串的最后。
4.读取word文本内容代码
1
import
java.io.File;
2
import
java.io.FileInputStream;
3
import
java.io.InputStream;
4
5
import
org.apache.poi.POIXMLDocument;
6
import
org.apache.poi.POIXMLTextExtractor;
7
import
org.apache.poi.hwpf.extractor.WordExtractor;
8
import
org.apache.poi.openxml4j.opc.OPCPackage;
9
import
org.apache.poi.xwpf.extractor.XWPFWordExtractor;
10
11
public
class
Test
{
12
public
static
void
main(String[]
args)
{
13
try
{
14
InputStream
is
=
new
FileInputStream(new
File("2003.doc"));
15
WordExtractor
ex
=
new
WordExtractor(is);
16
String
text2003
=
ex.getText();
17
System.out.println(text2003);
18
19
OPCPackage
opcPackage
=
POIXMLDocument.openPackage("2007.docx");
20
POIXMLTextExtractor
extractor
=
new
XWPFWordExtractor(opcPackage);
21
String
text2007
=
extractor.getText();
22
System.out.println(text2007);
23
24
}
catch
(Exception
e)
{
25
e.printStackTrace();
26
}
27
}
28
}