2

Python を使用して、新しい Microsoft Word ドキュメントに複数のテーブルを作成しようとしています。最初のテーブルを作成できます。しかし、COM Range オブジェクトの設定が間違っていると思います。それは終わりを指しているわけではありません。最初のテーブルは "Hello I am a text!" の前に配置され、2 番目のテーブルは最初のテーブルの最初のセル内に配置されます。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 呼び出しが 1 つだけになりました。

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

コードが機能するようになりました。データベースから読み取り、各エントリから新しいテーブルを作成できます。

ティム

于 2011-03-03T02:25:25.330 に答える