Word合併套印問題 |
答題得分者是:flyup
|
bigfat
一般會員 發表:3 回覆:4 積分:1 註冊:2002-07-18 發送簡訊給我 |
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
在Dephi 5中提供了一組Servers元件,實現了與Office的無縫結合,但有關這一方面的資料卻很少,最近筆者接觸了一個用戶案例,要求最終將資料庫中的結果總結成一份Word文檔,Word文檔中對於標題、正文的字體、字號,文檔的紙張大小都有一定的要求,而且還要求以表格的形式體現一部分資料庫中的資料。 筆者通過查找VBA的說明,再對照Dephi的VCL,終於實現了全部功能,現將有關的內容總結如下: 1、在當前程序目錄下建立以標題字段命名的Word文件 exepath:=application.ExeName; for index:=1 to length(exepath) do if exepath[index]='\' then i:=index; exepath:=copy(exepath,1,i); doc_file:=exepath+mc+'.doc'; 以標題字段「mc」命名Word文件 try Wordapplication1.connect; except messagedlg('沒有安裝Word',mterror,[mbok],0); abort; end; Wordapplication1.Caption := 'XX計劃書'; Wordapplication1.visible := true; Worddocument1.activate; 2、設置紙張大小 Wordapplication1.ActiveDocument.PageSetup.PageWidth:=XXX; Wordapplication1.ActiveDocument.PageSetup.PageHeight:=XXX; Wordapplication1.ActiveDocument.PageSetup.LeftMargin := XX; //設置左邊距 Wordapplication1.ActiveDocument.PageSetup.rightMargin := XX; //設置右邊距 3、插入頁碼 var fpage,pagea:olevariant; fpage:=true; pagea:=wdAlignPageNumberCenter; Wordapplication1.activedocument.sections.item(1).Footers.item(1).PageNumbers.Add(pagea,fpage); 4、設置頁面橫向打印 s:=Wordapplication1.selection.start; e:=Wordapplication1.selection.start; aa:=wdSectionBreakNextPage; Wordapplication1.ActiveDocument.Range(s,e).InsertBreak(aa); Wordapplication1.Selection.Start:=Wordapplication1.Selection.Start + 1; s:=Wordapplication1.Selection.start; e:=Wordapplication1.ActiveDocument.Content.End_; Wordapplication1.ActiveDocument.Range(S,e).PageSetup.Orientation:=wdOrientLandscape; 5、設置字體、字號 Wordapplication1.Selection.Font.Size:=18; Wordapplication1.Selection.Font.Name := '黑體'; Wordapplication1.Selection.TypeParagraph; Wordapplication1.Selection.ParagraphFormat.Alignment:= wdAlignParagraphCenter; Wordapplication1.Selection.TypeParagraph; Wordapplication1.Selection.TypeText(dbedit4.text); //標題 Wordapplication1.Selection.Font.Size := 14; Wordapplication1.Selection.Font.Name := '細明體'; Wordapplication1.Selection.TypeParagraph; Wordapplication1.Selection.TypeParagraph; Wordapplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphJustify; Wordapplication1.Selection.TypeText(' '+trim(dbmemo1.text)); //正文 ... ... 6、插入表格 Wordapplication1.Selection.Font.Size :=10; adoquery2.Active:=false; adoquery2.active:=true; doc:=Wordapplication1.activedocument; counts:=adoquery2.RecordCount; //記錄數決定表格的行數 t:=doc.tables.Add(Wordapplication1.selection.range,counts+1,5);//5列 t.cell(1,1).range.text:= '單位'; t.Cell(1,1).Width:=120; t.cell(1,1).range.Paragraphs.Alignment:= wdAlignParagraphCenter; t.cell(1,2).range.text:= '姓名'; ... ... //依次寫入其他字段的表頭 for i:=2 to counts+1 do begin t.cell(i,1).range.text:=adoquery2.field byname('dw').asstring; t.Cell(i,1).Width:=120; t.cell(i,1).range.Paragraphs.Alignment:= wdAlignParagraphCenter; t.cell(i,2).range.text:=adoquery2.field byname('xm').asstring; ... ... Adoquery2.next; End; 使用Dephi將Word與資料庫結合,實現了用戶文檔的自動生成,大大地方便了用戶。
|
bigfat
一般會員 發表:3 回覆:4 積分:1 註冊:2002-07-18 發送簡訊給我 |
引言: 關於字型設定是否正常??謝謝大大的回答 ^^ 字型設定上好像沒有問題... 套印的欄位資料如果很多就 會出亂碼.... 如果少一點好像就不會出現亂碼 每次開啓後如出現亂碼就要在重新直執行 合併套印...word會出現一個編碼視窗...這時選擇big5碼就可以了 但不知能不能在程式中控製啊 文字檔的內容如下(欄位分格是用!符號) ---------------------------- C1!C2!C3!C4!C5!C6!C7!C8!C9!C10!C11!C12!C13!C14!C15!C16!C17!C18!C19!C20!C21 大胖子1!大胖子2!大胖子3!大胖子4!大胖子5!大胖子6!大胖子7!大胖子8!大胖子9!大胖子10!大胖子11!大胖子12!大胖子13!大胖子14!大胖子15!大胖子16!大胖子17!大胖子18!大胖子19!大胖子20!大胖子21 |
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
bigfat
一般會員 發表:3 回覆:4 積分:1 註冊:2002-07-18 發送簡訊給我 |
引言: CMF大大,建議程式寫成: 文件合併後,先存檔,在執行列印 在看看你的程式是否正常執行? 若無法處理,請上傳程式,給我看看你的問題? 發表人 - flyup 於 2003/02/07 23:47:58大大好~ 小弟已把word文件先做合併後在存檔,之後直接用程式開啓該word 出現的資料是亂碼 程式內容如下: ----------------------------------------------------------------- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,comobj, StdCtrls, Word2000, OleServer; type TForm1 = class(TForm) WordApplication1: TWordApplication; WordDocument1: TWordDocument; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; wrdobj:Variant; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin try wrdobj:=CreateOleObject('Word.Application'); wrdobj.Documents.Open(ExtractFilePath(Application.exename) '\test.doc'); wrdobj.Visible:=True; except ShowMessage('無法啟動Word'); end; end; end. ------------------------------------------------------------------ 文字檔的內容如下所述(已!分格欄位) word檔內文只有這幾個欄位的資料 -------------------------------------------------- C1!C2!C3!C4!C5!C6!C7!C8!C9!C10!C11!C12!C13!C14!C15!C16!C17!C18!C19!C20!C21 大胖子1!大胖子2!大胖子3!大胖子4!大胖子5!大胖子6!大胖子7!大胖子8!大胖子9!大胖子10!大胖子11!大胖子12!大胖子13!大胖子14!大胖子15!大胖子16!大胖子17!大胖子18!大胖子19!大胖子20!大胖子21 P.S:因不知如何上傳檔案...還是寄到大大的信箱啊 \~^^~/ |
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
bigfat
一般會員 發表:3 回覆:4 積分:1 註冊:2002-07-18 發送簡訊給我 |
引言: 請參閱: 用OLE連結WORD http://delphi.ktop.com.tw/topic.php?topic_id=148 試試看! 會員求助程式檔案上傳區 http://delphi.ktop.com.tw/forum.asp?FORUM_ID=97謝謝大大~ ^^ 我把檔案放在 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25655 麻煩看一下原因在那.... 有兩個按鈕分別開啓不同word檔案 這兩份word文件皆是合併套印檔 分別再於一個資料來源為access另一個則是txt file 開啓資料來源為access則可正常顯現中文 另一個則為出現亂碼..... 只有套印資料中有中文才會出現此現像 如文件中本有中文則不會出現亂碼...只有套印的資料有中文才會出現亂碼... 麻煩大大解答 ~ ^^ |
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
TEST Part II come from CMF大大 開啟經過編碼的檔案時,沒有出現 [檔案轉換] 對話方塊。
Word 能自動測試文字檔所用的編碼標準。預設的編碼標準是在目前使用的 Windows 版本中將檔案儲存為純文字時所用的編碼標準,如果檔案的編碼標準與預設編碼標準一致,Word 將直接開啟指定檔案。如果要在每次開啟延伸格式設定的檔案時都顯示 [檔案轉換] 對話方塊,使自己能檢查或變更其編碼標準,請: 按一下 [工具] 功能表的 [選項],然後按一下 [一般] 索引標籤。 選取 [開啟舊檔時確認轉換] 核取方塊。 關閉並重新開啟該編碼檔案。
|
bigfat
一般會員 發表:3 回覆:4 積分:1 註冊:2002-07-18 發送簡訊給我 |
引言: TEST Part II come from CMF大大 開啟經過編碼的檔案時,沒有出現 [檔案轉換] 對話方塊。 Word 能自動測試文字檔所用的編碼標準。預設的編碼標準是在目前使用的 Windows 版本中將檔案儲存為純文字時所用的編碼標準,如果檔案的編碼標準與預設編碼標準一致,Word 將直接開啟指定檔案。如果要在每次開啟延伸格式設定的檔案時都顯示 [檔案轉換] 對話方塊,使自己能檢查或變更其編碼標準,請: 按一下 [工具] 功能表的 [選項],然後按一下 [一般] 索引標籤。 選取 [開啟舊檔時確認轉換] 核取方塊。 關閉並重新開啟該編碼檔案。謝謝大大的解答 ~ ^^ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |