2011-02-03 54 views
2

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

任何想法?

感谢蒂姆

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 

回答

1

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

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

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

Tim

相关问题