所需依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.17</version>
</dependency>
创建工具类
public void analysisFile(HttpServletRequest request) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile multipartFile = entity.getValue();// 获取上传文件对象
//获取文件头判断版本
byte[] b = new byte[4];
multipartFile.getInputStream().read(b, 0, b.length);
String value = bytesToHexString(b);
//2003版本的word
if ("d0cf11e0".equals(value )) {
HWPFDocument document = new HWPFDocument(inputStream);
String txt = document.getText().toString();
for (String string : txt.split("\r")) {
stringList = new ArrayList<String>();
if (!StringUtils.isEmpty(string) || "\\n".equals(string)) {
stringList.add(string.split(",")[0]);
stringList.add(string.split(",")[1]);
list.add(stringList);
}
}
} else {
XWPFDocument doc = new XWPFDocument(inputStream);
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
//获取文件内容
for (String string : extractor.getText().split("\\n")) {
stringList = new ArrayList<String>();
if (!StringUtils.isEmpty(string) || "\\n".equals(string)) {
stringList.add(string.split(",")[0]);
stringList.add(string.split(",")[1]);
list.add(stringList);
}
}
}
}
因为2003版本的word需要用不同的类去解析,所以使用头部信息来判断word是什么版本