我试图在python-docx(https://github.com/mikemaccana/python-docx)的帮助下自动创建. docx文件(WordML)。我当前的脚本使用以下循环手动创建ToC:
for chapter in myChapters:
body.append(paragraph(chapter.text, style='ListNumber'))
有人知道使用“word内置”ToC功能的方法吗?该功能会自动添加索引,并创建到各个章节的段落链接?
非常感谢!
@Mawg//更新ToC
有同样的问题要更新ToC并在谷歌上搜索。不是我的代码,但它是有效的:
word = win32com.client.DispatchEx("Word.Application")
doc = word.Documents.Open(input_file_name)
doc.TablesOfContents(1).Update()
doc.Close(SaveChanges=True)
word.Quit()
很抱歉在旧帖子中添加评论,但我认为这可能会有所帮助。这不是我的解决方案,但已经在那里找到了:https://github.com/python-openxml/python-docx/issues/36幸亏https://github.com/mustash和https://github.com/scanny
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
paragraph = self.document.add_paragraph()
run = paragraph.add_run()
fldChar = OxmlElement('w:fldChar') # creates a new element
fldChar.set(qn('w:fldCharType'), 'begin') # sets attribute on element
instrText = OxmlElement('w:instrText')
instrText.set(qn('xml:space'), 'preserve') # sets attribute on element
instrText.text = 'TOC \\o "1-3" \\h \\z \\u' # change 1-3 depending on heading levels you need
fldChar2 = OxmlElement('w:fldChar')
fldChar2.set(qn('w:fldCharType'), 'separate')
fldChar3 = OxmlElement('w:t')
fldChar3.text = "Right-click to update field."
fldChar2.append(fldChar3)
fldChar4 = OxmlElement('w:fldChar')
fldChar4.set(qn('w:fldCharType'), 'end')
r_element = run._r
r_element.append(fldChar)
r_element.append(instrText)
r_element.append(fldChar2)
r_element.append(fldChar4)
p_element = paragraph._p
关键的挑战是,呈现的ToC依赖于分页来知道每个标题的页码。分页是布局引擎提供的一项功能,它是Word客户端内置的一个非常复杂的软件。用Python编写页面布局引擎可能不是一个好主意,绝对不是我计划在近期内进行的项目:)
ToC由两部分组成:
创建元素非常简单,而且工作量相对较低。创建实际可见内容,至少如果您希望包含页码,需要Word布局引擎。
以下是选项:
>
添加标签,然后通过C#或Visual Basic与Word Automation library交互,让Word客户端打开并保存文件;所有字段(包括ToC字段)都会更新。
如果你有一个SharePoint实例,或者其他任何可以通过Word Automation Services实现的实例,那么在服务器端执行同样的操作。
在文档中创建一个AutoOpen宏,在打开文档时自动运行字段更新。可能不会通过很多病毒检查,也不会在企业环境中常见的锁定Windows版本上工作。
下面是埃里克·怀特(Eric White)的一组非常好的视频,解释了所有令人毛骨悚然的细节
这里介绍下一篇非常不错的xpath教程,爬虫入门到精通-网页的解析(xpath) 在很久以前,那时我还不会xpath,用的是bs4,在我看到这篇文章之后就学会了xpath,觉得xpath实在太好用了,以后就再也没使用过bs4了。 我直接把他的文章copy过来了。 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 XPath基于XML
1.6. 使用grunt创建项目 grunt是基于任务的构建工具,和make,rake,ant,cake,maven,gradle等是一样的 1.6.1. 前置条件 前置条件需要有nodejs和npm,请确保已安装成功: npm install -g grunt npm install -g grunt-init git clone https://github.com/gruntjs/grunt
主要内容:安装lxml库,lxml使用流程,lxml库数据提取lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 Xpath 表达式提供了良好的支持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 安装lxml库 lxml 属于 Python 第三方库,因此需要使用如下方法安装: 在 CMD 命令行验证是否安装成功。若引入模块,不返回错误则说明安装成功。 lxml使用流程 l
如何在基于Debian的系统上使用Ansible Playbook在创建目录?
主要内容:确定信息元素结构,基准表达式,提取数据表达式,完整程序代码本节通过编写一个简单的爬虫程序,进一步熟悉 lxml 解析库的使用。 下面使用 lxml 库抓取猫眼电影 Top100 榜( 点击访问),编写程序的过程中,注意与《 Python爬虫抓取猫眼电影排行榜》中使用的正则解析方式对比,这样您会发现 lxml 解析库是如此的方便。 确定信息元素结构 首先明确要抓取信息的网页元素结构,比如电影名称、主演演员、上映时间。通过简单分析可以得知,每一部影片的信息都