从word文档生成有组织的Excel电子表格

时间:2017-02-06 16:55:02

标签: python openpyxl python-docx

我有要转移到Excel的Microsoft文档。每个句子都需要分开,然后粘贴到excel中的下一个适当的单元格中。这些句子也需要作为标题,要求或信息进行分析。 我将重新创建典型的单词格式

2.3.4     Lightening Transient Response 
          The device shall meet spec 24532. Voltage must resemble figure.
          Figure 1.

转换为

<numbering>      <Heading>
                 <Requirements/information>

在excel中,除了第二个要求句子之外,几乎就是我要查看的文件应该在前一个要求句子的正下方。

2.3.4   | Lightening Transient Response     | Heading
        | The device shall meet spec 24532. | Requirement
        |Voltage must resemble figure       | Requirement
        |figure  1                          | Informational

我使用openxl和docx模块使用python尝试了这个项目。我有代码可以进入单词并获得句子,然后代码可以分析句子。我从段落中检索运行。我遇到了问题,因为并非所有句子都会因为word文档的格式化而返回。我通常只回头。标题号不存储在运行中。标题下的要求存储在表格中。我已经编写了一些代码来进入表格,从单元格中提取文本,这是获得要求的一种方法,但代码片段给出了问题(连续三次给我相同的句子)。

我正在寻找其他可能的方法来做到这一点。我正在考虑格式转换。已经提到了XML,然后pdf和pythons pdf模块也是可能的。

非常感谢任何想法或建议。

-Chris

2 个答案:

答案 0 :(得分:0)

XML将变得更难,而不是更容易。你比想象的更近。我建议单独攻击每个问题,直到你破解它为止。

表中三次问题的句子是因为合并的单元格。 python-docx对表的工作方式,有x行和y列的基础表布局。如果合并了两个并排单元格,则两个单元格的结果相同。您可以检测到这是比较两个单元格是否相等。大概就像“if this_cell == last_cell跳过这个单元格”。

无法绕过标题问题。标题号仅存在于正在运行的Word实例中;它们是在显示(或打印)时生成的。要获得那些你需要使用相同的规则来生成自己的数字。因此,您需要跟踪您通过的标题数量等,并形成您自己的点分隔编号。

答案 1 :(得分:0)

为什么要使用Python呢?只需使用VBA,因为您正在使用Excel和Word。

这样的事情应该让你非常接近你想要的地方。可能需要一些调整......

ImageView

因此,请复制Word文档中的文本,该文档应该是开放且有效的,并且您很高兴。还有其他方法可以做到这一点。

相关问题