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

求教 docx 如何按页切分成多个 docx 文件啊?

  •  
  •   foxthree · 3 天前 · 1362 次点击

    问了 gpt 。只会让用 python-docx ,但是用这个包切出来都是缺失格式的,图片跟表格都丢了,而且分不了页,用了下 aspose 的包,确实可以不丢格式,但是那是商用的。大家有知道的吗

    21 条回复    2024-07-03 18:49:05 +08:00
    whatv3
        1
    whatv3  
       3 天前
    用 word 里的 vbs 宏,之前写过一个脚本帮助专利同事自动把文档分割成专利五书...
    qazzz
        2
    qazzz  
       3 天前
    不知道,但是 gpt 告诉我的:
    使用宏自动拆分
    以下是一个示例 VBA 宏,它可以自动将 Word 文档按页拆分为多个 .docx 文件:

    打开宏编辑器:

    打开你的 Word 文档。
    按 Alt + F11 打开宏编辑器。
    插入新模块:

    在宏编辑器中,选择“插入” > “模块”,然后将以下代码粘贴到新模块中:
    vba
    复制代码
    Sub SplitDocumentByPages()
    Dim doc As Document
    Dim page As Range
    Dim newDoc As Document
    Dim i As Integer
    Dim pageNumber As Integer

    Set doc = ActiveDocument
    pageNumber = doc.ComputeStatistics(wdStatisticPages)

    For i = 1 To pageNumber
    Set page = doc.Range.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=i)
    page.End = doc.Range.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=i + 1).Start
    page.End = page.End - 1

    Set newDoc = Documents.Add
    newDoc.Range.FormattedText = page.FormattedText
    newDoc.SaveAs2 FileName:=doc.Path & "\Page" & i & ".docx"
    newDoc.Close
    Next i
    End Sub
    运行宏:
    关闭宏编辑器。
    按 Alt + F8 打开宏列表。
    选择 SplitDocumentByPages 并运行它。
    这个宏将会自动将当前打开的 Word 文档按页拆分,并将每一页保存为一个新的 .docx 文件。这些文件将保存到与原始文档相同的文件夹中,文件名格式为 Page1.docx 、Page2.docx ,以此类推。
    totoro625
        3
    totoro625  
       3 天前
    临时用还是要写脚本跑大量数据?

    应急:
    1 、打印成 PDF
    2 、WPS 自带 PDF 拆分
    3 、PDF 批量转成 Word
    loopinfor
        4
    loopinfor  
       3 天前
    如果可以转 PDF 就转 PDF 再分页保存。
    也可以用大纲来解决,要分页的地方设置个一级大纲级别的文字,然后在大纲视图里面全选->创建->保存,就可以了。
    foxthree
        5
    foxthree  
    OP
       3 天前
    @totoro625 脚本跑。要上生产环境的,服务器应该是 linux
    foxthree
        6
    foxthree  
    OP
       3 天前
    @qazzz 能在服务器上跑的方法呢。。。这在本地电脑好像确实可以
    foxthree
        7
    foxthree  
    OP
       3 天前
    @loopinfor 单纯只是切割的话,转 pdf 确实可以,但是还有后续转 md 的要求,用包转 pdf 再转成 md ,调研过也会缺失很多东西
    kmyq
        8
    kmyq  
       3 天前
    python 有个操作 doc 的库吧,可以部署在 linux
    foxthree
        9
    foxthree  
    OP
       3 天前
    @kmyq 又一个 python-docx 但是好像不是太好用,或者我太菜了发挥不出来..
    kasusa
        10
    kasusa  
       3 天前
    c# de xceed 能用。github 有免费版
    heinz97
        11
    heinz97  
       3 天前
    我专门研究 docx 的,python-docx 功能很基础,完美的开源分割解决方法不存在
    heinz97
        12
    heinz97  
       3 天前
    @heinz97 开源作者没人会花时间研究这个,一般这类都是细分的商业场景
    iOCZS
        13
    iOCZS  
       3 天前
    页是排版的结果吧,数据本身有页的概念吗?
    summerwar
        14
    summerwar  
       3 天前
    跨页的表格打算如何处理?
    paopjian
        15
    paopjian  
       3 天前
    分页是排版后的结果吧,你怎么保证这一页内容不是被上一页挤下来的?如果上一页没了那这页内容可就浮上去了
    undeflife
        16
    undeflife  
       3 天前
    jackmod
        17
    jackmod  
       3 天前
    docx 格式要自己计算内容高度啊,这也太痛苦了。
    如果 LibreOffice 没有相关接口的话就只能自己写个渲染器了。
    TsubasaHanekaw
        18
    TsubasaHanekaw  
       3 天前   ❤️ 1
    找台 windows 服务器,安装 office,调用 com+接口效果应该最完美了
    foxthree
        19
    foxthree  
    OP
       2 天前
    @heinz97 好像确实是这样。花时间来搞分页在我们这边没太有性价比
    foxthree
        20
    foxthree  
    OP
       2 天前
    @paopjian 是的,类似于排版前端的功能。这让后端来搞分割缺失太痛苦了
    luzemin
        21
    luzemin  
       2 天前
    docx 的话那就找个编程语言操作 OpenXML 就好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2587 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:15 · PVG 16:15 · LAX 01:15 · JFK 04:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.