Python 确定单元格是否包含Word中的方程式

Python 确定单元格是否包含Word中的方程式,python,excel,vba,ms-word,Python,Excel,Vba,Ms Word,我有一个Word表格,里面有不同的文本,还有一些使用Microsoft Equation 3.0的方程式 我目前正在尝试从表中读取文本,并使用相同的表创建Excel工作表 有没有办法将Word中的方程式规范化为文本 如果没有,有人知道我如何识别方程来绕过它吗 我当前读取表格的代码如下: word = win32.gencache.EnsureDispatch('Word.Application') word.Visible = False raw_files = glob('*.docx') x

我有一个Word表格,里面有不同的文本,还有一些使用Microsoft Equation 3.0的方程式

我目前正在尝试从表中读取文本,并使用相同的表创建Excel工作表

有没有办法将Word中的方程式规范化为文本

如果没有,有人知道我如何识别方程来绕过它吗

我当前读取表格的代码如下:

word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = False
raw_files = glob('*.docx')
xl = win32.gencache.EnsureDispatch('Excel.Application')
ss = xl.Workbooks.Add()
for f in raw_files:
    word.Documents.Open(f)
    doc = word.ActiveDocument
    for x in xrange(1, doc.Paragraphs.Count+1):
        oText = doc.Paragraphs(x)
        if oText.Range.Tables.Count >0 :
            ph = ss.ActiveSheet
            for r in xrange(1, oText.Range.Tables(1).Rows.Count):
                for c in xrange(1, oText.Range.Tables(1).Columns.Count):
                    if oText.Range.Tables(1).Cell(r,c).Range.Text != None:
                        ph.Cells(r+2,c).Value = oText.Range.Tables(1).Cell(r,c).Range.Text
当我遇到等式时,错误是“请求的成员不存在”


有没有一种简单的方法可以绕过包含方程式的单元格?

如果您正在运行Word 2010(可能是2007),您可以通过这种方法检查单元格中是否有方程式(这是表中每个单元格的完整循环,您可以轻松地将其转换为您的需要,Word VBA代码,已针对Word 2010进行了尝试和测试):

您可以尝试引用的某些属性来规范化您的方程式。不幸的是,我在这方面没有经验

编辑

要在代码中使用此解决方案,可以通过几种可能的方式实现:

a) 要检查表中是否有任何等式:

If oText.Range.Tables(1).Range.OMath.Count > 0 Then ... '>>here is
b) 要检查单元格中是否存在方程式,请执行以下操作:

If oText.Range.Tables(1).Cell(r,c).Range.OMath.Count > 0 Then ... '>>here is

如果您正在运行Word 2010(可能是2007),您可以通过这种方式检查单元格中是否有方程式(这是表中每个单元格的完整循环,您可以轻松地将其转换为您的需要,Word VBA代码,已针对Word 2010进行了尝试和测试):

您可以尝试引用的某些属性来规范化您的方程式。不幸的是,我在这方面没有经验

编辑

要在代码中使用此解决方案,可以通过几种可能的方式实现:

a) 要检查表中是否有任何等式:

If oText.Range.Tables(1).Range.OMath.Count > 0 Then ... '>>here is
b) 要检查单元格中是否存在方程式,请执行以下操作:

If oText.Range.Tables(1).Cell(r,c).Range.OMath.Count > 0 Then ... '>>here is

我试着运行它:它给了我相同的错误,只是从第一个单元格,而不是当程序运行到等式单元格时。您使用的是哪个版本的Word Library?抱歉,我再次运行了它。它可以工作,但不允许我访问单元格的Column和Row属性,因为该表已合并单元格。这是一个问题,因为我必须在Excel中复制此表。@Doof12,请参阅我答案的两个版本-一个在代码中(作为注释),第二个-答案的底部部分。非常好。非常感谢。我试着运行它:它给了我相同的错误,只是从第一个单元格,而不是当程序运行到等式单元格时。您使用的是哪个版本的Word Library?抱歉,我再次运行了它。它可以工作,但不允许我访问单元格的Column和Row属性,因为该表已合并单元格。这是一个问题,因为我必须在Excel中复制此表。@Doof12,请参阅我答案的两个版本-一个在代码中(作为注释),第二个-答案的底部部分。非常好。非常感谢。