Java【代码 18】处理Word文档里的Excel表格数据(源码分享)
处理Word文档里的Excel表格数据
- 1.原始数据
- 2.处理程序
- 2.1 识别替换表格表头
- 2.2 处理多余的换行符
- 2.3 处理后的结果
- 3.总结
1.原始数据
Word 文档里的 Excel 表格数据,以下仅为示例数据:
读取后的字符串数据为:
"姓名\r\n身份证号\r\n手机号\r\n户籍地\r\n张三丰\r\n411381198909092222\r\n15713862222\r\n河南郑州\r\n李四方\r\n411381198909093333\r\n15713863333\r\n河南新乡\r\n王五福\r\n411381198909095555\r\n15713865555\r\n河南安阳\r\n"
每个字段都有换行:
姓名
身份证号
手机号
户籍地
张三丰
411381198909092222
15713862222
河南郑州
李四方
411381198909093333
15713863333
河南新乡
王五福
411381198909095555
15713865555
河南安阳
2.处理程序
2.1 识别替换表格表头
首先要定位表格数据的开始和结束,示例中的 sonString
表格前面有一些数据,表格的后面就没有数据了【要注意这点儿】。
/**
* 处理包含表格的正文字符串
*
* @param sonString 正文字符串
* @return 处理后的正文字符串
*/
private String deal(String sonString) {
// 1.判断是否存在表格固定表头
boolean contains = sonString.contains("姓名\r\n身份证号\r\n手机号\r\n户籍地\r\n");
if (contains) {
String headerStr = "姓名,身份证号,手机号,户籍地\r\n";
// 2.将换行数据处理为一行数据
sonString = sonString.replace("姓名\r\n身份证号\r\n手机号\r\n户籍地\r\n", headerStr);
// 3.处理表格数据
int headerIndex = sonString.indexOf(headerStr);
String personInfoStr = sonString.substring(headerIndex + headerStr.length());
// 4.处理人员信息
String personInfo = dealPersonInfoStr(personInfoStr);
// 5.替换原有数据
sonString = sonString.replace(personInfoStr, personInfo);
}
return sonString;
}
2.2 处理多余的换行符
/**
* 处理每行数据里多余的换行符
*
* @param personInfoStr 人员信息
* @return 处理后的人员信息
*/
private String dealPersonInfoStr(String personInfoStr) {
int infoLength = 4;
String[] infoArr = personInfoStr.split("\r\n");
StringBuilder personInfo = new StringBuilder();
for (int i = 1; i < infoArr.length + 1; i++) {
if (i % infoLength == 0) {
personInfo.append(infoArr[i - 1]).append("\r\n");
} else {
personInfo.append(infoArr[i - 1]).append(",");
}
}
return personInfo.toString();
}
2.3 处理后的结果
"姓名,身份证号,手机号,户籍地\r\n张三丰,411381198909092222,15713862222,河南郑州\r\n李四方,411381198909093333,15713863333,河南新乡\r\n王五福,411381198909095555,15713865555,河南安阳\r\n"
姓名,身份证号,手机号,户籍地
张三丰,411381198909092222,15713862222,河南郑州
李四方,411381198909093333,15713863333,河南新乡
王五福,411381198909095555,15713865555,河南安阳
3.总结
- 代码是根据固定表头进行的处理,表头信息可以进行配置;
- 需要定位表格数据。