gpt4 book ai didi

python - 识别单元格是否包含 Word 中的方程式

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:07 24 4
gpt4 key购买 nike

我有一个 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 进行了尝试和测试):

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的一些属性来标准化您的方程。不幸的是,我没有这方面的经验。

编辑

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

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

关于python - 识别单元格是否包含 Word 中的方程式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com