当前位置: 首页 > 科技观察

实战 - Java读取Word,包含表格!

时间:2023-03-15 15:34:26 科技观察

实战|Java读取Word,包括表格!转载本文请联系JAVA日知录公众号。天天发鸡汤不行,今天分享一个开发实践。业务需求我们有这样一个需求,需要将WORD文档中的内容提取出来,然后组装成特定的json格式,发送给第三方引擎接口。输入协议如下:{"tables":[{"cells":[{"col":1,"row_span":1,"row":1,"col_span":1,"content":"vehiclename"}],"id":0,"row_num":2}],"paragraps":[{"para_id":1,"content":"Hello,JAVARizhilu"}]}这种输入格式需要我们阅读段落和表格中单词的内容。既然需求确定了,那么就开始动手写代码吧。基于POI实现,拿《如何在java中读word》去百度一搜,答案基本都是用POI实现的。当然,使用POI确实可以按段落和表格提取内容拼装成上面的格式,但是在实践过程中有两个问题:docx和docPOI这两种格式需要分别处理,docPOI使用不同的API来读取docx和文档。所以读逻辑我们需要写两次。当POI读取文档段落时,它也会读取表格的内容。这个问题比较可怜。POI有单独的方法读取文档中的所有表格,但是在读取doc格式的段落文档时,也会读取表格的内容。out,所以需要用下面的方法来排除表格://readdocHWPFDocumentdoc=newHWPFDocument(stream);Rangerange=doc.getRange();//readparagraphintnum=range.numParagraphs();Paragraphpara;for(inti=0;icom.e-icebluehttp://repo.e-iceblue.com/nexus/content/groups/public/引入对应的jar包e-icebluespire.doc.free3.9.0读word,这里是测试类publicclassSpireApplication{publicstaticvoidmain(String[]args){Stringpath="D:\\testDoc22.doc";spireParaghDoc(path);spireForTableOfDoc(path);}//读ParagraphpublicstaticvoidspireParaghDoc(Stringpath){Documentdoc=newDocument(path);for(inti=0;i