代码处理doc文档

需求

对一份doc文档进行操作,读取内容、把内容存储起来、修改内容,再把内容放回原文档输出新的word文档;内容主要涉及:文本、文本样式、表格

难点

  1. doc文档属于老旧文档(本身格式属于二级制) 开源工具如poi对doc支持有限
    • 能实现简单的需求如,手工处理一份文档在文档中用占位符号标明要修改的地方,再用新的内容去替换掉文档中的符号(需要用到poi中一个replacexx的方法)
  2. 开源工具如poi对doc支持有限,想要插入一个新的表格,这个表格是无法设置表格属性的
    • 官方文档也没有找到设置表格的属性方法,调用insert表格的一个方法,结果:(1)一个丑陋的缩在一起的表格,你的内容不好插入表格,同时内容就算插进去了,你会得到一个更丑陋的表格(样式无法设置,文本撑大了表格)(2)插入了表格,文档其他地方格式损坏如页脚、页眉
  3. doc属于二级制文件,它对于各个区域的界定相当于是用一个游标界定某些区域是什么(标题、页脚、页眉等),随意插入文本,但是poi工具不会帮你去移动游标,不可比避免损坏文档(内容跑去了其他区域)

解决方法

  1. 有实力,可以使用付费库Aspose处理doc文档,这个库是商业库(免费用时文档有水印)很好的支持doc老旧二进制的一些处理
  2. 手动处理,在文档进入代码处理之气那,手动将文档用工具另存为docx版本(如wps)
  3. 文件很多,需要尽可能代码流程化,需要用到外部工具LibreOffice转换(代码+服务器做一个类似于手动用wps转换的步骤)工具开源,也是专栏后续使用的工具安装使用LibreOffice
  4. 通知上游系统,能否直接提供新版本docx文档