前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >word导入

word导入

作者头像
Dlimeng
发布2023-06-29 14:27:41
1240
发布2023-06-29 14:27:41
举报
文章被收录于专栏:开源心路开源心路

word纯文本导入,我用的是poi

//其中的实体,可以不用看,只看两种word(doc,docx)数据封装就可以

public static List<Question> parseWord(String in) throws Exception{         List<String> list=new ArrayList<>();         if(iswordtype(in)==1){             InputStream is = new FileInputStream(in);             WordExtractor extractor = new WordExtractor(is);             String paraTexts2[]=extractor.getCommentsText();             String paraTexts3[]=extractor.getMainTextboxText();             String paraTexts[] = extractor.getParagraphText();             for (int i=0; i<paraTexts.length; i++) {                if(StringUtils.isNotBlank(StringUtils.trim(paraTexts[i]))){                    list.add(StringUtils.trim(paraTexts[i]));                }             }             //获取文件属性            //printInfo(extractor.getSummaryInformation());             close(is);         }else if(iswordtype(in)==2){             OPCPackage oPCPackage = POIXMLDocument.openPackage(in);             XWPFDocument doc = new XWPFDocument(oPCPackage);             POIXMLTextExtractor ex = new XWPFWordExtractor(doc);             POIXMLProperties.CoreProperties coreProps = ex.getCoreProperties();             //printCoreProperties(coreProps);             List<XWPFParagraph> paras = doc.getParagraphs();             for (XWPFParagraph para : paras) {                 //当前段落的属性                 //CTPPr pr = para.getCTP().getPPr();                 //System.out.println(para.getText());                 if(StringUtils.isNotBlank(StringUtils.trim(para.getText()))){                     list.add(StringUtils.trim(para.getText()));                 }             }         }else{             System.out.println("格式不对");             return null;         }         List<Question> newlist=null;         Question question = null;         Question.QuestionOption questionOptionDto=null;         List<Question.QuestionOption> qolist=null;         StringBuilder questionOption=null;         if(list!=null && list.size()>0){             newlist=new ArrayList<>();             question=new Question();             questionOption=new StringBuilder();             qolist=new ArrayList<>();             questionOptionDto=new Question.QuestionOption();             int type=0;             for (int i = 0; i < list.size(); i++) {                 if(list.get(i).contains("、判断")||list.get(i).contains("、是非")||list.get(i).contains("、对错")){                     type=3;                     question.setQuestiontype(type);                     question.setStem(list.get(i));                     System.out.println("\n"+list.get(i));                     continue;                 }else if(list.get(i).contains("、单选")||list.get(i).contains("、单项")){                     type=1;                     question.setQuestiontype(type);                     question.setStem(list.get(i));                     System.out.println("\n"+list.get(i));                     continue;                 }else if(list.get(i).contains("、多选")){                     type=2;                     question.setQuestiontype(type);                     question.setStem(list.get(i));                     System.out.println("\n"+list.get(i));                     continue;                 }else if(list.get(i).startsWith("、案例") || list.get(i).startsWith("、病案")){                     type=5;                     question.setQuestiontype(type);                     question.setStem(list.get(i));                     System.out.println("\n"+list.get(i));                     continue;                 }else if(list.get(i).contains("、主观")){                     type=4;                     question.setQuestiontype(type);                     question.setStem(list.get(i));                     System.out.println("\n"+list.get(i));                     continue;                 }else{                     if(isTitele(StringUtils.trim(list.get(i)))){                         question.setStem(list.get(i));                         //questionOption.append("[{\"optionCont\":");                         System.out.println("类型: "+type);                         System.out.println(list.get(i));                     }else{                         if(type!=0){                             System.out.println(list.get(i));                             //String[] option=list.get(i).split("^([a-zA-Z]+[-\\:].*)");                             if(StringUtils.trim(list.get(i)).startsWith("答案:")){                                 questionOptionDto.setOptionCont(list.get(i));                                 qolist.add(questionOptionDto);                                 question.setQuestionOptionList(qolist);                                 qolist=new ArrayList<>();                                 questionOptionDto=new Question.QuestionOption();                                 newlist.add(question);                                 question=new Question();                                 //questionOption.append("}]");                                 //questionOption = new StringBuilder(String.format(questionOption.toString(), list.get(i).split("答案:")[1]));                                 //question.setQuestionOptions(questionOption.toString());                                 //newlist.add(question);                                 //question=new Question();                                 //questionOption = new StringBuilder();                             }else{                                // questionOption.append(list.get(i)+"\n");                                 questionOptionDto.setOptionCont(list.get(i));                                 qolist.add(questionOptionDto);                                 questionOptionDto=new Question.QuestionOption();                             }                         }else{                             System.out.println(list.get(i));                         }                     }                 }             }         }         return newlist;

    }

/**      * 判断文档类型      * @param path      */     public static int iswordtype(String path){         int result;         if(path.endsWith(".doc")){             result=1;         }else if(path.endsWith(".docx")){             result=2;         }else{             result=3;         }         return result;     }     /**      * 关闭输入流      * @param is      */     public static void close(InputStream is) {         if (is != null) {             try {                 is.close();             } catch (IOException e) {                 e.printStackTrace();             }         }     }     /**      * 输出CoreProperties信息      * @param coreProps      */     private static  void printCoreProperties(POIXMLProperties.CoreProperties coreProps) {         System.out.println("开始信息----------------");         System.out.println(coreProps.getCategory());   //分类         System.out.println(coreProps.getCreator()); //创建者         System.out.println(coreProps.getCreated()); //创建时间         System.out.println(coreProps.getTitle());   //标题         System.out.println("结束信息----------------");     }     /**      * 输出SummaryInfomation      * @param info      */     private static  void printInfo(SummaryInformation info) {         //作者         System.out.println(info.getAuthor());         //字符统计         System.out.println(info.getCharCount());         //页数         System.out.println(info.getPageCount());         //标题         System.out.println(info.getTitle());         //主题         System.out.println(info.getSubject());     }     /**      * 输出DocumentSummaryInfomation      * @param info      */     private static void printInfo(DocumentSummaryInformation info) {         //分类         System.out.println(info.getCategory());         //公司         System.out.println(info.getCompany());     }     //判断Str是否存在小标题号     public static boolean isTitele(String str){         Pattern pattern = Pattern.compile("^([\\d]+[-\\、|\\.].*)");         return pattern.matcher(str).matches();     }     //判断Str是否是 数字     public static boolean isNumeric(String str){         Pattern pattern = Pattern.compile("[0-9]*");         return pattern.matcher(str).matches();     }     //判断Str是否是选择题选择项     public static boolean isSelecteTitele(String str){         Pattern pattern = Pattern.compile("^([a-zA-Z]+[-\\:].*)");         return pattern.matcher(str).matches();     }     //判断Str是否是大标题     public static boolean isBigTilete(String str){         boolean iso= false ;         if(str.contains("一、")){             iso=true;         }else if(str.contains("二、")){             iso=true;         }else if(str.contains("三、")){             iso=true;         }else if(str.contains("四、")){             iso=true;         }else if(str.contains("五、")){             iso=true;         }else if(str.contains("六、")){             iso=true;         }else if(str.contains("七、")){             iso=true;         }else if(str.contains("八、")){             iso=true;         }         return iso;     }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档