(这我一想这不简单嘛,poi唰唰就解决了,然而。。。)
dom4j
dom4j
1.6.1
org.slf4j
slf4j-log4j12
1.7.25
org.projectlombok
lombok
1.18.10
provided
mysql
mysql-connector-java
8.0.15
org.apache.poi
poi
4.0.1
org.apache.poi
poi-scratchpad
4.0.1
com.alibaba
easyexcel
2.0.5
public static String readWord(String path) {
String buffer = "";
try {
if (path.endsWith(".doc")) {
Biff8EncryptionKey.setCurrentUserPassword("123456");
InputStream is = new FileInputStream(new File(path));
WordExtractor ex = new WordExtractor(is);
buffer = ex.getText();//获取文档中的所有内容
ex.close();
// 处理doc格式 即office2003版本
POIFSFileSystem pfs = new POIFSFileSystem(new FileInputStream(new File(path)));
HWPFDocument hwpf = new HWPFDocument(pfs);
Range range = hwpf.getRange();//得到文档的读取范围
TableIterator it = new TableIterator(range);
// 迭代文档中的表格
System.out.println("获取文档中的表格--------------------------------");
while (it.hasNext()) {
Table tb = (Table) it.next();
System.out.println("这是第" + 1 + "个表的数据");
//迭代行,默认从0开始,可以依据需要设置i的值,改变起始行数,也可设置读取到那行,只需修改循环的判断条件即可
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();
//去除后面的特殊符号
if(null != s && !"".equals(s)){
s = s.substring(0, s.length()-1);
}
System.out.print(s + "\t");
}
}
System.out.println();
}
}
} else if (path.endsWith("docx")) {
OPCPackage opcPackage = POIXMLDocument.openPackage(path);
POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
buffer = extractor.getText();
extractor.close();
} else {
System.out.println("此文件不是word文件!");
}
} catch (Exception e) {
e.printStackTrace();
}
return buffer;
}
1.1 doc文件
// 处理doc格式 即office2003版本
POIFSFileSystem pfs = new POIFSFileSystem(in);
HWPFDocument hwpf = new HWPFDocument(pfs);
Range range = hwpf.getRange();//得到文档的读取范围
TableIterator it = new TableIterator(range);
1.2 docx文件
// 处理docx格式 即office2007以后版本
//word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后
XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息
Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格
1.3 xls文件和xlsx文件
if(file.getName().endsWith("xls")) {
wb=new HSSFWorkbook(is);//创建了一个工作簿
}else if (file.getName().endsWith("xlsx")) {
wb = new XSSFWorkbook(is);
}
姓名=1,1
性别=1,4
出生年月=1,6
照片=1,8
民族=2,1
籍贯=2,4
出生地=2,6
党派及加入时间=3,1
参加工作时间=3,4
健康状况=3,6
专业技术职务=4,1
熟悉专业有何专长=4,5
学历学位-全日制教育-毕业院校及专业=5,6
学历学位-在职教育-毕业院校及专业=6,6
现任职务及主要社会兼职=7,2
简历=8,1
主要成绩及奖惩情况=9,1
近三年参加统战系统培训情况=10,1
通讯地址=18,1
邮政编码=18,6
办公电话=19,1
电子邮件=19,6
手机=20,1
传真=20,6
##家庭主要成员或国内外亲属中的知名人士
。。。
/**
* 读取配置文件
*
* @param filePath
*/
public void loadProperties(String filePath) {
Properties prop = new Properties();
try {
InputStream in = this.getClass().getResourceAsStream(filePath);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
prop.load(bufferedReader);
Set<Entry<Object, Object>> set = prop.entrySet();
Iterator<Map.Entry<Object, Object>> it = set.iterator();
String key = null, value = null;
// 循环取出key-value
while (it.hasNext()) {
Entry<Object, Object> entry = it.next();
key = String.valueOf(entry.getKey());
value = String.valueOf(entry.getValue());
// 将key-value放入map中
configMap.put(key, value);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//图片到byte数组
public static byte[] image2byte(File filePath){
byte[] data = null;
FileImageInputStream input = null;
try {
input = new FileImageInputStream(filePath);
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int numBytesRead = 0;
while ((numBytesRead = input.read(buf)) != -1) {
output.write(buf, 0, numBytesRead);
}
data = output.toByteArray();
output.close();
input.close();
}
catch (FileNotFoundException ex1) {
ex1.printStackTrace();
}
catch (IOException ex1) {
ex1.printStackTrace();
}
return data;
}