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
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章