java解析doc或者docx文件,文件中内容为表格形式
这里对解析内容进行了数据库存表,对存入字段进行了写死处理。
public ViewData down(File file) throws IOException {
ViewData viewData = new ViewData();
if (file == null) {
viewData.setIsSucceed(false);
viewData.setMessage("未选择导入文件");
}
//读取word文档
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
WhistleRegister whistleRegister = new WhistleRegister();
String value = "";
String filePath = file.getPath();
try{
FileInputStream in = new FileInputStream(filePath);
// 处理docx格式 doc 与docx格式共用
POIFSFileSystem pfs = new POIFSFileSystem(in);
HWPFDocument hwpf = new HWPFDocument(pfs);
//得到文档的读取范围
Range range = hwpf.getRange();
TableIterator it = new TableIterator(range);
// 迭代文档中的表格
// 如果有多个表格只读取需要的一个 set是设置需要读取的第几个表格,total是文件中表格的总数
int set = 1, total = 4;
int num = set;
for (int i = 0; i < set-1; i++) {
it.hasNext();
it.next();
}
while (it.hasNext()) {
Table tb = (Table) it.next();
System.out.println("这是第" + num + "个表的数据");
//迭代行,默认从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);
value = s;
}
//工单编号
if (i == 0 && j == 1) {
whistleRegister.setNumber(value);
}
//来电时间
if(i == 0 && j == 3){
whistleRegister.setDf10(value);
}
//热线号码
if (i == 1 && j== 1) {
whistleRegister.setDf1(value);
}
//受理单位
if (i == 1 && j == 3) {
whistleRegister.setDf2(value);
}
//来电人
if (i == 2 && j == 1) {
whistleRegister.setDf3(value);
}
//来电号码
if (i == 2 && j == 3) {
whistleRegister.setPhone(value);
}
//联系方式
if (i == 3 && j == 1) {
whistleRegister.setMobile(value);
}
//来电人地址
if (i == 4 && j ==1) {
whistleRegister.setDf4(value);
}
//问题分类
if (i == 5 && j == 1 && k == 0) {
whistleRegister.setDf5(value);
}
//工单分类
if (i == 6 && j == 1) {
whistleRegister.setDf6(value);
}
//发生地址
if (i == 6 && j == 3) {
whistleRegister.setAddress(value);
}
//被反映单位
if (i == 7 && j == 1 && k == 0) {
whistleRegister.setDf7(value);
}
//标题
if (i == 8 && j == 1 && k == 0) {
whistleRegister.setTitle(value);
}
//主要内容
if (i == 9 && j == 0 && k == 0) {
whistleRegister.setContent(value);
}
//派单人员
if (i == 10 && j == 1) {
whistleRegister.setRegisteruser(value);
}
//派单时间
if (i == 10 && j == 3) {
Date date = sdf.parse(value);
whistleRegister.setRegistertime(date);
}
//处理意见
if (i == 11 && j == 1 && k == 0) {
whistleRegister.setDf8(value);
}
//截止时间
if (i == 12 && j == 1 && k == 0) {
Date date = sdf.parse(value);
whistleRegister.setLimit(date);
}
if (i == 13 && j == 1 && k == 0) {
whistleRegister.setDept(value);
}
if (i == 14 && j == 1 && k == 0) {
whistleRegister.setDf9(value);
}
}
}
}
}
whistleRegister.setRegisterid(UniqueIdUtil.genId());
whistleRegisterDao.add(whistleRegister);
viewData.setIsSucceed(true);
viewData.setMessage("文件上传成功并解析完毕!");
}catch(Exception e){
e.printStackTrace();
viewData.setIsSucceed(false);
viewData.setMessage("文件解析失败");
}
return viewData;
} 原文作者:一个暖心的IT男
原文地址: https://blog.csdn.net/weixin_37005773/article/details/89703032
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/weixin_37005773/article/details/89703032
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章