【问题标题】:Using python win32com can't make two separate tables in MS Word 2007使用 python win32com 无法在 MS Word 2007 中创建两个单独的表
【发布时间】:2011-12-08 00:37:05
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: python ms-word win32com


    【解决方案1】:

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

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

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

    提姆

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      相关资源
      最近更新 更多