用Python和docx库保存Word表中的列值

2024-06-11 08:46:05 发布

您现在位置:Python中文网/ 问答频道 /正文

如何只打印MS word表第二列中的值。 我的代码如下打印第一列值,第二列值 一个比另一个低。 示例:Word表格式:

colm 1       column2
SR#          32213
Part#        K9843
PartDesc     SteamBolt

---我的代码---

import docx
from docx import Document
wordDoc = Document('c:\python-programs\ssis-test.docx')
for table in wordDoc.tables:
    for row in table.rows:
        for cell in row.cells:
            print (cell.text)

---结束我的代码--- 上面的代码打印如下。你知道吗

SR#
32213
Part# 
K9843
PartDesc
SteamBolt

我只想打印值32213, K9843SteamBolt(仅在第二列中)

Python版本:3.5.2带有docx库。你知道吗

谢谢你的帮助。你知道吗


Tags: 代码inimportfortablecelldocumentrow
1条回答
网友
1楼 · 发布于 2024-06-11 08:46:05

Docx可能不是最好的方法,因为它只提供了单词api的一小部分,尽管它出现在GitHub上,但已经有好几年没有得到显著的开发了。你知道吗

更好的方法是使用Win32Com,它提供对Com对象模型(如office应用程序)的完全访问。对于Win32com,您还需要使用makepy为您希望使用的对象模型生成intellisense。你知道吗

快速浏览一下这里会有所帮助

http://timgolden.me.uk/pywin32-docs/html/com/win32com/HTML/QuickStartClientCom.html

VBA解决问题的方法是

Option Explicit

Sub test()

    Dim my_table                    As Word.Table
    Dim my_row                      As Word.Row
    Dim my_text                     As String

    For Each my_table In ActiveDocument.Tables

        For Each my_row In my_table.Range.Rows

            my_text = my_row.Range.Cells(2)

        Next

    Next

End Sub

但这并不能保证,因为如果您的表包含已合并的单元格,Word的表处理就会出现问题。可以使用.Uniform属性测试将出现问题的表。如果你需要的话,我会让你去研究如何处理一张不统一的桌子。你知道吗

相关问题 更多 >