V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ghwolf007
V2EX  ›  程序员

上万个 word 文档批量自动化排版

  •  
  •   ghwolf007 · 99 天前 · 1075 次点击
    这是一个创建于 99 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题:上万个 doc 的 word 文档,类似论文格式的报告(包括目录,正文,插图清单,附录清单,参考文献),每个部分都对文字格式、段落格式有要求,标题和正文不能出现某些字眼,目前这上万个 doc 文档中可能存在大量格式不符合要求的,因为是不同的人写的,积攒了很多年了,现在要批量排版归档。

    需求:请教各位大佬怎么批量自动化排版?自己调研了一下,先 win32com 转 docx ,然后使用 python-docx 结合 vba 把文档内容读取出来按照要求重新排版写入新文件,这条路子可不可行?因为之前没接触过,希望各位大佬不吝赐教!
    10 条回复    2024-08-19 09:10:01 +08:00
    mirrornighth
        1
    mirrornighth  
       99 天前
    可行的
    ruanimal
        2
    ruanimal  
       99 天前
    有的 word 文档 的排版样式非常复杂,程序排版效果不一定好
    如果只有这么多文档,多找点人人力搞一下?
    Ib7WF3828E1C0W09
        3
    Ib7WF3828E1C0W09  
       99 天前
    可行的
    ghwolf007
        4
    ghwolf007  
    OP
       99 天前
    @mirrornighth #1
    @wittgensteinR #3
    感谢大佬
    ghwolf007
        5
    ghwolf007  
    OP
       99 天前
    @ruanimal #2 就是因为太费人了。。。希望能尽可能的代替人工处理大部分格式问题
    DsuineGP
        6
    DsuineGP  
       98 天前
    如果这些文档是由同一个文档模版创建的, 那么可行; 否则, 不可行

    1, 无法准确识别文章某一个段落的格式类型, docx 文档中不存在「标题」「正文」...只有「样式表」, 换句话说, 所有的标题和正文的格式只是「样式表」中的某一个样式的命名.你没法保证每一个文档中样式表的命名都是「标题」「正文」.只能根据 fontSize==16 或者 bold==true 这样的条件去判断, 但是每一个文档中样式都略有区别.

    2. 从 doc 转到 docx 之后, 形状、图片元素可能被转置成 VML 而非 OOXML 通用的 DML, 虽然没看 python-docx 代码, 但是大概率是不支持的
    ghwolf007
        7
    ghwolf007  
    OP
       98 天前
    @DsuineGP #6 感谢大佬 非常专业!!!
    1.目前这些文档确实来源五花八门 提交的时候又强制要求转为 doc 来提交 最终修改完还是要转为 doc 所以处理起来很麻烦;
    2. python-docx 应该是不支持 VML 的,就是不知道能不能局部修改,只改标题、正文文本、目录、页码这些。
    ghwolf007
        8
    ghwolf007  
    OP
       98 天前
    @DsuineGP #6 我看 doc 和 docx 都有内置样式和自定义样式吧 这块会有什么区别吗
    DsuineGP
        9
    DsuineGP  
       98 天前
    @ghwolf007 逻辑上没有区别, 印象中 doc 跟 docx 一样都是根据 styleId 去样式表中查找对应的样式, 但是这个 styleId 五花八门, 比如一眼从客户端中能看出来是标题的段落, 实际的 styleId 可能是 「 heading 1 」/「标题」 或者干脆命名成 「丁真」
    ghwolf007
        10
    ghwolf007  
    OP
       94 天前
    @DsuineGP #9 这个还真是难搞 看来需要从生产的源头卡死 这个有啥好办法吗 现在有用 office 的 也有用 wps 的 搞一套通用模板给到源头?是修改系统自带样式还是新增样式比较好一些?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2061 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 154ms · UTC 16:14 · PVG 00:14 · LAX 08:14 · JFK 11:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.