2011-02-03 5 views
2

Pythonを使用して新しいMicrosoft Word文書に複数のテーブルを作成しようとしています。私は最初のテーブルを作成することができます大丈夫。しかし、私は間違って構成されたCOM Rangeオブジェクトを持っていると思います。それは終わりを指していません。最初のテーブルは「こんにちは私はテキストです!」の前に置かれ、2番目のテーブルは最初のテーブルの最初のセルの中に入れられます。私は、wordappからRangeを返すと全範囲を返し、次にwdCollapseStart Enumを使って折りたたんだと思った。私はこれが1だと思う。(私はPythonのwin32comで定数を見つけることができない)。したがって、Rangeの末尾にテーブルを追加すると、ドキュメントの末尾にテーブルが追加されますが、それは起こっていません。pythonを使用すると、win32comはMS Word 2007で2つの別個のテーブルを作成できません

アイデア?

おかげでティム

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コールが1つしかありません。

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

コードが機能し、データベースから読み込み、各エントリから新しいテーブルを読み込むことができます。

ティム

関連する問題