全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4042
推到 Plurk!
推到 Facebook!

Word合併套印問題

答題得分者是:flyup
bigfat
一般會員


發表:3
回覆:4
積分:1
註冊:2002-07-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-07 22:06:36 IP:203.204.xxx.xxx 未訂閱
小弟有一個word文件檔及以一個純文字檔 用這兩個檔案做合併套印 之後在用程式直接開啓這個word文件 但中文的部份(純字檔內的資料)會出現亂碼(資料多的話會出現此問題) 請問要怎麼解決呢? 麻煩各位大大了 ~ ^^
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-07 22:30:16 IP:61.216.xxx.xxx 未訂閱
關於字型設定是否正常??    
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-07 22:45:30 IP:61.216.xxx.xxx 未訂閱
在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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-07 22:49:02 IP:203.204.xxx.xxx 未訂閱
引言: 關於字型設定是否正常??
謝謝大大的回答 ^^ 字型設定上好像沒有問題... 套印的欄位資料如果很多就 會出亂碼.... 如果少一點好像就不會出現亂碼 每次開啓後如出現亂碼就要在重新直執行 合併套印...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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-07 23:32:37 IP:61.216.xxx.xxx 未訂閱
CMF大大,建議程式寫成: 文件合併後,先存檔,在執行列印    在看看你的程式是否正常執行?    若無法處理,請上傳程式,給我看看你的問題?     發表人 - flyup 於 2003/02/07 23:47:58
bigfat
一般會員


發表:3
回覆:4
積分:1
註冊:2002-07-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-08 16:05:35 IP:203.204.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-08 16:36:02 IP:61.217.xxx.xxx 未訂閱
請參閱: 用OLE連結WORD http://delphi.ktop.com.tw/topic.php?topic_id=148 試試看! 會員求助程式檔案上傳區 http://delphi.ktop.com.tw/forum.asp?FORUM_ID=97
bigfat
一般會員


發表:3
回覆:4
積分:1
註冊:2002-07-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-08 19:16:15 IP:203.204.xxx.xxx 未訂閱
引言: 請參閱: 用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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-02-09 10:10:26 IP:61.225.xxx.xxx 未訂閱
會造成亂碼的原因:    paper.txt文字檔的欄位格式有問題,較易造成亂碼現象!    讓word認為是非中文語系文件.才會提示你使用何種語系。    因為test1.doc巨集程式已封鎖,所以無法給你叫完整的答案!    
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-02-09 17:32:01 IP:61.225.xxx.xxx 未訂閱
TEST Part II come from CMF大大    開啟經過編碼的檔案時,沒有出現 [檔案轉換] 對話方塊。 Word 能自動測試文字檔所用的編碼標準。預設的編碼標準是在目前使用的 Windows 版本中將檔案儲存為純文字時所用的編碼標準,如果檔案的編碼標準與預設編碼標準一致,Word 將直接開啟指定檔案。如果要在每次開啟延伸格式設定的檔案時都顯示 [檔案轉換] 對話方塊,使自己能檢查或變更其編碼標準,請:     按一下 [工具] 功能表的 [選項],然後按一下 [一般] 索引標籤。    選取 [開啟舊檔時確認轉換] 核取方塊。    關閉並重新開啟該編碼檔案。         
bigfat
一般會員


發表:3
回覆:4
積分:1
註冊:2002-07-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-02-13 10:11:20 IP:61.220.xxx.xxx 未訂閱
引言: TEST Part II come from CMF大大 開啟經過編碼的檔案時,沒有出現 [檔案轉換] 對話方塊。 Word 能自動測試文字檔所用的編碼標準。預設的編碼標準是在目前使用的 Windows 版本中將檔案儲存為純文字時所用的編碼標準,如果檔案的編碼標準與預設編碼標準一致,Word 將直接開啟指定檔案。如果要在每次開啟延伸格式設定的檔案時都顯示 [檔案轉換] 對話方塊,使自己能檢查或變更其編碼標準,請: 按一下 [工具] 功能表的 [選項],然後按一下 [一般] 索引標籤。 選取 [開啟舊檔時確認轉換] 核取方塊。 關閉並重新開啟該編碼檔案。
謝謝大大的解答 ~ ^^
系統時間:2024-04-29 18:41:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!