請教各位大俠,關于delphi呼叫word書簽的,
用word書簽生成報告
現在我有一個模版,書簽我也弄好了,也能生成一個報告了。
但我的要求是要根據資料庫里的情況,生成多份報告,而且是生成在同一個word里面。
請問實作?
if(Application.MessageBox('你確定要生成report檔案嗎?','提示',MB_OKCANCEL)=IDOK) then
begin
wordapp:=CreateOLEObject('Word.Application');
wordapp.visible:=true;
if Opendialog1.Execute then
FileName:=Opendialog1.FileName; //'f:\a.dot';
wordapp.documents.add(FileName,False);
wordapp.Documents.Item(1).Bookmarks.Item('name_1').Range.Text := 'test';
wordapp.Documents.Item(1).Bookmarks.Item('no_1').Range.Text := '1111';
wordapp.Documents.Item(1).Bookmarks.Item('firstName_1').Range.Text := 'S';
wordapp.Documents.Item(1).Bookmarks.Item('LastName_1').Range.Text := 'H';
wordapp.Documents.Item(1).Bookmarks.Item('age').Range.Text :='1';
wordapp.Documents.Item(1).Saveas('report1.doc');
end;
uj5u.com熱心網友回復:
既然你都知道生成一個是Item(1)那么多份我就不多說吧
uj5u.com熱心網友回復:
不好意思,這段代碼我也是copy來,對于這里面的item(1)是什么含義我也不清楚。看了你的回復,我加了一段:
wordapp.Documents.Item(2).Bookmarks.Item('name_1').Range.Text := 'test';
但執行時報錯了,說“集合所要求的成員不存在”
敬請指教! 非常感謝!!!!!!
uj5u.com熱心網友回復:
wordapp.Documents.Item.add?uj5u.com熱心網友回復:
wordapp.Documents.Item.add(name,range)name書簽名string
range是word中選中內容 你的書簽所表示的地方 舉例Selection.Range
uj5u.com熱心網友回復:
您好!! 能不能指導一下,如何具體寫? 我花了一天的時間看這些個word的操作,暈了也沒找到辦法。非常感謝!!
uj5u.com熱心網友回復:
抱歉我在4樓打錯了,用了上一樓的 不過你應該看的出來吧如果你按下面這樣寫不行,說一下我再研究
加書簽 就是指定一個位置range 加一個書簽name
wordapp.Documents.Item(1).Bookmarks.Item.add(name,range)
所以你加多個書簽的難點 是在于找到哪個地方添加的range
uj5u.com熱心網友回復:
我可能沒說清楚,我現在碰到的問題是用word做好模版,要替換的地方用word的書簽。
然后用delphi對書簽相應位置賦值,完成。但是要生成的報告不是只有一兩份,數量不定,而我不可能寫一個很長的模版。
所以我的解決思路是 根據資料量回圈取模版,替換資料后,插入到目標word檔案里,列印即可。
碰到的問題是如何反復取模版并插入同一個目標word。
uj5u.com熱心網友回復:
表達有些混亂 問人應該抓住點 技術點 哪里不會 不是這樣帶著邏輯你應該是想要到word里面插入報告,有一定格式要求,不能直接插入。
你又不可能提前做好所有書簽。
if是這樣的話 1,你的問題可以變為如何在word指定位置插入內容 2,你為何要用書簽呢
{1.通過搜索關鍵字來定位
2,目錄結構 標題級別之類定位
我的資源有份 word api你應該看過吧不然上面書簽也寫不出來 我資源里面有wps的與word差不多,word api很好找
}
else
{我提供不了建議}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/123446.html
上一篇:delphi Tchart中使用Tpointseries 畫點狀圖,如何改變點的形狀,如圓點,叉號,小三角...
