识别单元格是否包含Word中的等式

我在Word中有一个用不同文本填充的表格,还有一些使用Microsoft公式3.0的方程式。

我目前正在尝试从表格中读取文本,并使用相同的表格创build一个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进行testing):

 Dim eqCell As Cell For Each eqCell In ActiveDocument.Tables(1).Range.Cells If eqCell.Range.OMaths.Count > 0 Then 'if there is any equation this if statement will return true 'so, this cell should be bypassed '**EDIT** how to get row and column number of this cell: Dim rowNo As Long Dim colNo As Long rowNo = eqCell.Range.Information(wdEndOfRangeRowNumber) colNo = eqCell.Range.Information(wdEndOfRangeColumnNumber) Debug.Print rowNo, colNo '**END OF EDIT** End If Next 

您可以尝试使用OMathFunction Object的某些属性来标准化您的等式。 不幸的是,我没有这方面的经验。

编辑

要在你的代码中使用这个解决scheme,你可以用几种可能的方式来实现它:

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