php - Microsoft Word 自动化 - 以编程方式删除标题(及其子 indo)

标签 php python ms-word automation

只是想知道是否有人有阅读 Microsoft Word 文档并以编程方式(基于标题)删除某些段落和 block 的经验

有没有人知道任何图书馆可以用我熟悉的一种语言来做到这一点:

  • python
  • PHP
  • C#
  • Java

我用谷歌搜索了一些,大多数似乎都能够读写文档(及其部分),但似乎没有涵盖迭代当前标题的列表。如果我可以获得一个列表作为对象(或类似的东西),那么我可以专门删除我想要的内容。

这样做的主要目的是我有一个包含大量信息的大型模板文档,但只需要某些部分,为每个文档挑选和选择,所以我打算构建一个小型前端来动态生成这些文档。

How I would achieve this in MS Word

正如您将在上图中看到的,删除“Mutts”标题 2 项将删除红色框中的所有内容,如果可以使用任何预先编写的库,那将是惊人的,我不会深入研究 XML。

如果可能的话,我也宁愿不必使用 COM(组件对象模型),但如果涉及到这一点,我可能会使用 Python for Windows Extensions。

非常感谢你们能提供的任何帮助。

最佳答案

我将此作为答案发布,因为有太多信息无法发表评论。考虑到这一点,这不会真的回答您的问题。对于看起来像这样的 word 文档:


标题 1

东西

东西

东西

标题 2

其他内容

其他内容

其他内容


生成的 xml,去掉了属性和不必要的元素,看起来像这样:

<?xml encoding="UTF-8"?>
<w:document>
    <w:body>
        <w:p>
            <w:pPr>
                <w:pStyle w:val="Heading1"/>
            </w:pPr>
            <w:r>
                <w:t>Heading 1</w:t>
            </w:r>
        </w:p>
        <w:p>
            <w:r>
                <w:t>Stuff</w:t>
            </w:r>
        </w:p>
        <w:p>
            <w:r>
                <w:t>Stuff</w:t>
            </w:r>
        </w:p>
        <w:p>
            <w:r>
                <w:t>Stuff</w:t>
            </w:r>
        </w:p>
        <w:p/>
        <w:p>
            <w:pPr>
                <w:pStyle w:val="Heading1"/>
            </w:pPr>
            <w:r>
                <w:t>Heading 2</w:t>
            </w:r>
        </w:p>
        <w:p>
            <w:r>
                <w:t>Other stuff</w:t>
            </w:r>
        </w:p>
        <w:p>
            <w:r>
                <w:t>Other stuff</w:t>
            </w:r>
        </w:p>
        <w:p>
            <w:r>
                <w:t>Other stuff</w:t>
            </w:r>
        </w:p>
    </w:body>
</w:document>

因此,每个标题下方的“内容”并未真正包含在标题内。我使用的 API 中没有一个对于迭代现有文档非常有用。即使您可以检索标题列表,您也需要获取该标题和下一个标题之间的所有段落。话虽这么说,但我不确定是否有一个好的图书馆可以做到这一点。

我之前使用过 Python 的 docx 模块来创建文档,这需要一些时间来适应。通常,您可能想要考虑一种加法(创建您需要的 header )而不是一种减法(删除您不需要的 header )。此外,仅供引用,可以通过将 .docx 文件重命名为 .zip 来探索它们。

关于php - Microsoft Word 自动化 - 以编程方式删除标题(及其子 indo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35020199/

相关文章:

vba - 将文档另存为不带 VBA 代码的 .docx

php - WAMP Curl 安装

php - 从 mysql 数据库中选择与重复结果相同的行

php - strip 创建支出出现错误 "Sorry, you don' t 有该货币(美元)的任何外部账户”

Python 正则表达式,如何从字符串中删除所有匹配项

python - 如何拆分具有多个选项的 Pandas 系列?

java - 未使用 ASPOSE WORD 、 java 以 pdf 格式添加目录

vba - Selection.Paste 不保留完整的源格式

php - php中将xml文档插入mysql

javascript - django delete() 成功函数错误