線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2367
推到 Plurk!
推到 Facebook!

用Delphi輕鬆控制Excel 2K自動生成報表

 
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-07 02:21:56 IP:61.64.xxx.xxx 未訂閱
引言:http://tech.sina.com.cn/c/2004-06-07/1431372277.shtml 用Delphi輕鬆控制Excel 2K自動生成報表 http://www.sina.com.cn 2004年06月07日 14:31 天極網 文/趙中凱 梅國建 摘 要:Excel是當前最流行的資料報表製作工具。本文介紹如何使用Delphi來控制Excel完成資料庫與報表之間的資料交換,討論了報表製作工程中的一些細節性問題。 關鍵字:Delphi,Excel,報表 引言 資料報表作為企事業單位上報和下達的重要資訊載體,隨著資訊化建設的不斷推進,在實際的工作中得到了前所未有的應用。因此,資料報表已經成為管理資訊系統中重要的一項功能,並且,由於資料的多樣性和統計資訊的增加,資料報表的系統實現變得越來越複雜。 Delphi是一個高效的視覺化資料庫管理資訊系統開發工具,.但是Delphi開發環境中提供的報表控制項在製作複雜報表時顯得不夠理想,不管是以前版本提供的Quick Report控制項組,還是Delphi 7提供的Rave控制項組,都不能讓用戶對生成的報表進行改動,且程式控制很難實現。Excel作為現代辦公常用的試算表製作工具,以它的易操作性和實用性,得到了各行業辦公人員的青睞。本文根據實際應用實踐,介紹利用Delphi編程控制Excel生成報表的各種方法。 Delphi控制Excel的方法 1 創建Excel文件 要在Delphi中控制Excel,就必須用到OLE自動化。現在一般採用OLE2來創建OLE物件,當啟動一個OLE物件時,伺服器程式僅在容器程式內部啟動,這就是所謂的“就地啟動”(in-place activation)。 創建Excel檔時,先創建一個OLE物件,然後在物件中建立工作表worksheet,如函數createExcel所示: function createExcel:variant; var v:variant; sheet:variant; begin v:=createoleobject('Excel.Application');//創建OLE對象 v.visible:=true; v.workbooks.add(-4167); //添加工作表 v.workbooks[1].sheets[1].name:='test'; sheet:=v.workbooks[1].sheets['test']; return v; end; 2 資料表格控制 Excel表格的控制,主要包括資料的導入、修改;單格的合併、邊框的控制;表格的複製、粘貼等。當報表格式一定的情況下,表格的複製、粘貼顯得尤為重要,這樣,可以先製作一個檔範本,然後按照實際需要輸出多頁報表即可。 (1)數據的導入(importData) procedure importData; var I,j:integer; v:variant; begin v:=createExcel; //創建Excel文件test for I:=0 to maxcolumn do begin for j:=0 to maxrow do v.workbooks[1].sheets[1].cells[I,j]:=I*j; //導入數據 end; end; (2)單格的合併、邊框的控制(lineStylecontrol) 單格的合併,是在選定合併範圍的情況下進行的。邊框控制可以操作邊框線條的是否顯示。其他方式的控制,可以仿照下面過程進行。 procedure lineStylecontrol; var v,sheet,range:variant; begin v:=createExecl; sheet:= v.workbooks[1].sheets[1]; range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];//選定表格 range.select; range.merge; //合併單格 range.borders.linestyle:=xlcontinuous; //置邊框線可見 range.font.size:=9; //改變表格內文本字體大小 end; 用Delphi輕鬆控制Excel 2K自動生成報表(2) http://www.sina.com.cn 2004年06月07日 14:49 天極網 文/趙中凱 梅國建 (3)表格的複製與粘貼(copyandPaste) procedure copyandPaste; var v,sheet,range:variant; begin v:=createExecl; sheet:= v.workbooks[1].sheets[1]; range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]]; range.select; //選定要複製的表格 range.copy; //複製選定的表格 sheet.range[sheet.cells[40,1],sheet.cells[40,1]].select; //選擇要粘貼的位置 sheet.paste; //粘貼表格 end; 3 檔的保存 檔保存是在創建檔的基礎上進行的,過程saveFile說明了檔保存過程中應該注意的問題: procedure saveFile; var sheet,v:variant; begin v:=createExcel; if savedialog.execute then begin v.workbooks[1].saveas(savedialog.FileName);//保存檔 v.workbooks[1].close; //關閉工作表 v.quit; //關閉Excel v := unassigned; end; end; 報表製作應注意的問題 (1)報表格式的選擇 報表格式的選擇對資訊系統報表的實現方法起著決定性的影響。如果在報表的格式要求比較嚴格的情況下,應當採用範本的方式產生報表。由於範本在資料導入之前就已經按照標準制定好,所以只要在程式中控制範本的複製與粘貼,然後編程實現資料登錄指定位置即可。而對於報表格式多變的情況,由於資料的不同,需要合併單格或者控制邊框,可以直接在程式中自動控制報表的生成。 (2)列印 對於Excel報表的列印,最好不要在程式中進行控制,因為報表往往需要簽字或者進行審查,有許多報表都包含平面圖或示意圖,為了有效的控制列印品質,最好通過程式控制輸出或顯示Excel檔,以便修改;另一個重要的原因是Excel具有強大的排版功能,而這正是選擇Excel導出報表的重要原因。 (3)報表時間和表頭 報表時間要有用戶可以控制的輸出。表頭的製作要在事先做好格式,控制輸出時,只改動那些諸如上報單位、下達單位、負責人等資料,這樣既保證了系統的效率,又不失其實用性。 結論 用Delphi控制Excel來完成資料庫管理資訊系統的資料報表功能,是Delphi製作複雜報表的最佳選擇,因為Delphi不但能控制資料的導出與導入,而且可以完成當前Excel應用中的大部分功能。如果深入研究Visual Basic for Application(VBA)就可以製作出符合實際需要的各種Delphi控制Excel的控制項。 參考文獻: [1] Steve Teixeira,Xavier Pacheco.Delphi 6開發人員指南. 北京:機械工業出版社,2003. [2] 劉忠愷,劉春.Delphi 5.0資料庫開發應用教程. 北京:航空工業出版社,2000. [3] Steve Teixeira,Xavier Pacheco.Delphi5 Developers Guide.Sams publishing,2000. 【責任編輯:方舟】
系統時間:2024-05-08 1:13:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!