1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python-docx 复制一页_python 怎么用docx读取word的某一页然后放到新的word文档中?...

python-docx 复制一页_python 怎么用docx读取word的某一页然后放到新的word文档中?...

时间:2020-04-06 17:07:27

相关推荐

python-docx 复制一页_python 怎么用docx读取word的某一页然后放到新的word文档中?...

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。