admin 管理员组

文章数量: 887021

python-docx库找不到相关的页面对象,网上查找多说是word是流动分页的,文件内容本身并不存储分页结果,具体分页情况都是等到所有的图文渲染后才能确定。

后来在vba中发现了Rectangles对象,其中有页面属性,故使用win32com库调用vba相关内容来实现需求

下载相关库

pip install pywin32

import win32com

from win32com.client import Dispatch, DispatchEx

import os

# 指定copy页

page_n = 2

word = Dispatch('Word.Application') # 打开word应用程序

try:

word.Visible = 0 # 后台运行,不显示

word.DisplayAlerts = 0 # 不警告

path = os.path.abspath('test.docx') # word文件路径

doc_add = word.Documents.Add()

doc_add.SaveAs(os.path.abspath('test_new.docx')) # 创建新文件

doc_new = word.Documents.Open(os.path.abspath('test_new.docx'))

doc = word.Documents.Open(FileName=path)

# 页对象

pages = doc.ActiveWindow.Panes(1).Pages.Count

if page_n > pages:

print("指定页索引超出已有页面")

else:

objRectangles = doc.ActiveWindow.Panes(1).Pages(page_n).Rectangles

for i in range(objRectangles.Count):

objRectangles.Item(i+1).Range.Copy()

doc_new.Range(doc_new.Content.End - 1,doc_new.Content.End - 1).Paste()

doc.Close()

doc_new.Save()

doc_new.Close()

except Exception as e:

print(e)

finally:

word.Quit

已测试过没有问题,如遇到问题可以评论区交流

本文标签: 到新 文档 docx python Word