2

我正在尝试使用 Python 在新的 Microsoft Word 文档中创建多个表。我可以创建第一个表。但我认为我的 COM Range 对象配置错误。它没有指向终点。第一个表放在“Hello I am a text!”之前,第二个表放在第一个表的第一个单元格内。我认为从 wordapp 返回 Range 将返回整个范围,然后使用我认为是 1 的 wdCollapseStart Enum 折叠它。(我在 Python win32com 中找不到常量。)。因此,将表格添加到 Range 的末尾会将其添加到文档的末尾,但这并没有发生。

有任何想法吗?

谢谢蒂姆

import win32com.client

wordapp = win32com.client.Dispatch("Word.Application") 
wordapp.Visible = 1 
worddoc = wordapp.Documents.Add()
worddoc.PageSetup.Orientation = 1 
worddoc.PageSetup.BookFoldPrinting = 1 
worddoc.Content.Font.Size = 11
worddoc.Content.Paragraphs.TabStops.Add (100)
worddoc.Content.Text = "Hello, I am a text!"

location = worddoc.Range()
location.Collapse(1)
location.Paragraphs.Add()
location.Collapse(1)
table = location.Tables.Add (location, 3, 4)
table.ApplyStyleHeadingRows = 1
table.AutoFormat(16)
table.Cell(1,1).Range.InsertAfter("Teacher")

location1 = worddoc.Range()
location1.Paragraphs.Add()
location1.Collapse(1)
table = location1.Tables.Add (location1, 3, 4)
table.ApplyStyleHeadingRows = 1
table.AutoFormat(16)
table.Cell(1,1).Range.InsertAfter("Teacher1")
worddoc.Content.MoveEnd
worddoc.Close() # Close the Word Document (a save-Dialog pops up)
wordapp.Quit() # Close the Word Application
4

1 回答 1

2

问题似乎出在代表文档一部分的 Range 对象中。在我的原始代码中,Range 对象包含第一个单元格并从第一个单元格开始,它将插入其中。相反,我想在范围的末尾插入。所以我得到了以下代码替换工作。我在 Add() 调用之后移动了 Collapse,并给它一个参数 0。现在每个 Range 对象只有一个 Collapse 调用。

location = worddoc.Range()
location.Paragraphs.Add()
location.Collapse(0)

现在代码可以工作了,我可以从数据库中读取数据并从每个条目中填充新表。

蒂姆

于 2011-03-03T02:25:25.330 回答