999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種通用報表的設計和實現(xiàn)

2010-04-12 00:00:00日,薛慧君
現(xiàn)代電子技術 2010年18期

摘 要:提出一種通用報表的設計和實現(xiàn)方法,在信息管理系統(tǒng)設計中,查詢數(shù)據(jù)通常需要以報表的形式輸出,設計了一個非常實用的函數(shù),采用OLE自動化技術,通過程序代碼實現(xiàn)對Excel文檔的各種編輯功能,并應用于一類通用報表的設計和輸出。設計的函數(shù)接口簡單、易于調用,可以大大減少信息系統(tǒng)開發(fā)中一類通用報表的設計工作量,可重用性高。該方法已經(jīng)應用于多個實際應用系統(tǒng)的開發(fā)和設計。在此詳盡分析和闡述了通用報表的設計和實現(xiàn),并給出了該函數(shù)的主要代碼。關鍵詞:通用報表; 信息管理系統(tǒng); 函數(shù)調用; Excel報表格式

中圖分類號:TN911-34; TP31152文獻標識碼:A

文章編號:1004-373X(2010)18-0069-03

Design and Implementation of General Two-dimensional Report

XU Ri1, XUE Hui-jun2

(1.Department of Computer Science, Inner Mongolia Business Trade Vocational College, Hohhot 010010, China;

2.Department of Computer Science, Inner Mongolia Electronic Information Vocational Technical College, Hohhot 010010, China)

Abstract: The design and implementation methods of a general report are proposed. The data of MIS is usually outputed in a report mode during the design of information management system. Various edition functions for Excel files were realized with OLE automatization technology and program code. They are applied to the design and output of the first class common report. The designed function interface is simple and easy to be called, and can greatly reduce the design work of the common report in the development of information systems, this method has been applied to the development and design of many application systems. The detailed analysis and elaboration on design and implementation of a kind of general report are offered. The main codes of this function are also provided.Keywords: common report; information management system; function call; Excel report format

0 引 言

軟件設計和開發(fā)過程中,一般都要求數(shù)據(jù)的輸出,并且以報表的形式進行展示。一般的軟件設計開發(fā)工具都提供設計報表的工具和組件,常用的開發(fā)工具有微軟的VS系列,Borland 系列等設計工具都提供報表設計功能,但是都需要軟件開發(fā)者采用定制的形式逐個進行設計,而一般的MIS系統(tǒng)都有為數(shù)不少的報表設計工作,并且報表形式大多是通用的數(shù)據(jù)報表,部分為圖表結合的報表、三維報表以及其他形式的報表。在工程實踐過程中,逐個設計報表需要很大的工作,一旦需要修改,則逐個修改的工作量很大,存在重復設計和維護問題。

文獻[1-9]提出的報表設計方法,基本側重在設計技術和技巧,或者是定義報表組件[5]方面,其特點是功能多,使用較為復雜,部分也直接輸出為Excel報表格式[6,9]。本文主要針對的情況是在信息系統(tǒng)中,各種查詢的數(shù)據(jù)一般都是展示在界面窗口中,顯示的格式已經(jīng)帶有二維報表的特性,帶有標題、列標題和數(shù)據(jù)等。本文在軟件工程開發(fā)實踐中,利用OLE自動化技術,使用Microsoft VBA接口,直接把顯示柵格中的數(shù)據(jù),直接以Excel報表的格式輸出。這種報表具有通用性強,使用非常簡單。同時可以利用Excel的功能進行報表格式的控制。本文以Borland Dephi6.0(或以上版本)進行闡述實現(xiàn)的原理,并給出實現(xiàn)的步驟和代碼。

1 通用報表分析

1.1 報表的數(shù)據(jù)

報表的數(shù)據(jù)一般從單個或多個數(shù)據(jù)庫表中獲取,而一般通過SQL查詢語句得到數(shù)據(jù)。通常在MIS系統(tǒng)設計上,往往都是先顯示在窗口界面,然后輸出打印。所以無論什么形式的數(shù)據(jù)總是先顯示在窗口界面的數(shù)據(jù)柵格中,如Delphi中通常用TDBGid或TStringGrid中。因此可以直接把顯示在Grid中的數(shù)據(jù)直接為報表數(shù)據(jù)輸出即可。而TDBGrid通過TDatasource獲得現(xiàn)實的數(shù)據(jù)源,TDataSource的通過TDateset取得數(shù)據(jù),TDataset有3種數(shù)據(jù)形式:TTable,TQuery和TStoreProcedure。而TTable完全使用簡單的TQuery可以實現(xiàn)并代替。TQuery通過SQL語句提取數(shù)據(jù)庫中的數(shù)據(jù),SQL語句極為靈活,可以完成很多包括統(tǒng)計、排序、多表操作等各種功能,而Select類的SQL語句返回的數(shù)據(jù)均為二維數(shù)據(jù)。

1.2 報表的顯示格式

一般通用的二維報表包括標題、副標題、列標題、數(shù)據(jù)行、表尾等幾個部分,當然也有很多復雜的報表,但是復雜的報表一般都需要設計和定制。而本文需要解決的正式這種簡單的而又通用的二維報表,可以通過簡單的函數(shù)調用即可完成。

2 報表設計的實現(xiàn)

本文以Delphi開發(fā)環(huán)境下,Borland Delphi中調用Excel的方式有4種方式,見文獻[10]的相關章節(jié)。這里使用以Variant變量的方式來調用Excel。具體的方法可以參見GridToExcel函數(shù)中的代碼。

函數(shù)體中控制輸入和設置Excel的各種屬性等操作,需要操作Excel文件的接口文件ExcelTLB.pas。該文件提供了編程操作Excel的Delphi接口類庫,需要Microsoft Office環(huán)境下,通過Delphi提供的導入類庫來實現(xiàn),具體操作步驟為:打開Delphi,點擊Project菜單下的“Import Type Library…”,在彈出對話框中,點擊“Add…”按鈕,從office安裝的文件夾找到xl5chs32.olb文件,然后點擊“Create Unit”即生成ExcelTLB.pas文件,把生成的ExcelTLB.pas文件另存到項目的文件夾以備使用。本文實現(xiàn)的函數(shù)(GridToExcel)所在單元必須在USES部分加入ExcelTLB單元。

3 報表輸出函數(shù)實現(xiàn)

這里給出了表格輸出函數(shù)的設計步驟和代碼。函數(shù)名稱為GridToExcel,參數(shù)有grid類型為TDBGrid,xlfile:string為Excel輸出的文件名,報表標題T1:string。函數(shù)返回值為輸入的報表數(shù)據(jù)行數(shù)。函數(shù)使用的局部變量如下:

var xlApp:Variant;//Excel對象

i,j:integer;irow,icol:integer;//循環(huán)控制變量

函數(shù)體分為以下幾個部分。

(1) 創(chuàng)建Excel自動化對象,代碼如下:

//判斷Grid是否有數(shù)據(jù),無則直接返回

if (not grid.DataSource.DataSet.Active) or (grid.Datasource.Dataset.RecordCount=0) then exit;

Try

xlapp:=createoleobject(′Excel.application′);

xlapp.workbooks.Add(-4167);

xlapp.visible:=true;

Except

showmessage(′未安裝Microsoft Excel!請安裝!′);exit;

end;

(2) 填充標題到Excel對象,代碼如下:

irow:=grid.DataSource.DataSet.RecordCount;

icol:=0;

for i:=0 to grid.Columns.Count-1 do begin

if grid.Columns[i].Visible then//隱藏列不顯示

begin

inc(icol); xlapp.cells[TitleLines+1,Icol]:=grid.Columns[i].Title.Caption;

end;

end;

(3) 設置Excel報表顯示的標題行格式:

For i:=1 to TitleLines do begin

xlapp.activesheet.cells[i,1]:=Titles[i];xlapp.activesheet.range[′A′+IntToStr(i)+′:′+chr(64+icol)+IntToStr(i)].select;

xlapp.selection.HorizontalAlignment:= xlCenter;

xlapp.selection.VerticalAlignment:= xlCenter;

xlapp.selection.MergeCells := True;

//設置標題字體大小

if i=1 then begin

xlapp.selection.RowHeight:=26;

xlapp.selection.Font.size:=18;

end else begin

xlapp.selection.RowHeight:=20;

xlapp.selection.Font.size:=12;

end;

end;

(4) 設置表格線:

//設置表格線;

xlapp.activesheet.range[′A′+IntTostr(TitleLines+1)+′:′+chr(64+icol)+Inttostr(irow+TitleLines+1)].select;

with xlapp.selection do begin

Borders[xlEdgeBottom].linestyle:=xlContinuous;

Borders[xlEdgetop].linestyle:=xlContinuous;

Borders[xlEdgeright].linestyle:=xlContinuous;

Borders[xlEdgeLeft].linestyle:=xlContinuous;

End;

(5) 把Grid中的數(shù)據(jù)填到Excel中:

grid.DataSource.DataSet.First;

i:=TitleLines+2;

while not grid.DataSource.DataSet.Eof do begin

icol:=0;

for j:=1 to grid.Columns.Count do begin

if grid.Columns[j-1].Visible then begin

inc(icol);

xlapp.cells[i,icol]:=grid.Columns[j-1].Field.DisplayText;end;

end;

grid.DataSource.DataSet.Next; inc(i);

end;

(6) 調整Excel的列寬度自適應寬度:

For i:=1 to icol do begin

xlapp.activesheet.Columns[i].select;

xlapp.activesheet.Columns[i].EntireColumn.AutoFit;

end;

(7) 保存報表為指定的Excel文件名

xlapp.activesheet.cells[1,1].select;

xlapp.workbooks[1].SaveAs(xlfile);

4 使用實例

上述的函數(shù)完全可以加入到設計系統(tǒng)的Delphi項目中,并作為通用的函數(shù),加入到通用函數(shù)庫單元中,需要在函數(shù)所在單元的USES部分加入上述的ExcelTLB單元。如系統(tǒng)地把圖書系統(tǒng)的查詢結果輸出到報表,只需要在查詢界面中增加一個按鈕,按鈕點擊事件代碼如下。就可以生成生成一個Excel二維報表。

procedure TBookSearchForm.ReportBtnClick(Sender: TObject);

begin

dmf.SaveDialog1.Filter:=′Excel文件(*.xls)| *.xls|所有文件(*.*)|*.*′;

if dmf.SaveDialog1.Execute then

begin GridToExcel(dmf.SaveDialog1.FileName,DBGrid1,′圖書查詢結果表′);

end;

end;

5 結 語

報表制作是MIS系統(tǒng)開發(fā)過程的一個重要的部分,許多通用的報表制作工具都提供了很大的功能支持,但是對于設計者而言都需要逐個設計,且工作繁瑣,維護工作量大。本文詳細闡述了通過一個簡單的函數(shù)實現(xiàn)簡單報表功能,可以給一類簡單的二維報表輸出提供很方便的調用。提供了完整的Delphi函數(shù)實現(xiàn)代碼,可以把其封裝為DLL庫的方式,供其他編程開發(fā)工具調用。該報表輸出方法已經(jīng)在開發(fā)的“XX汽車維修企業(yè)信息系統(tǒng)”、“出版社圖書信息管理”等多個MIS系統(tǒng)得到應用,提高了報表設計的效率。

參考文獻

[1]李迎春,孫學波.非交互式報表生成器組件的設計和實現(xiàn)[J].計算機工程與設計,2009,30(10):2558-2560,2563.

[2]李興勇,袁兆山,汪正海.復雜報表生成系統(tǒng)實現(xiàn)技術研究[J].計算機應用,2007(7):1821-1824.

[3]艾永亮.一種新的通用報表模型的研究與實現(xiàn)[J].現(xiàn)代電子技術,2007,30(4):172-173,180.

[4]劉紀敏.基于ActiveX控件與SQL查詢的通用報表軟件設計[J].計算機應用與軟件,2005,22(4):134-135.

[5]金雨,張旭堂,劉文劍.用戶自定義通用報表打印的設計與實現(xiàn)[J].計算機應用與軟件,2008,25(3):132-134.

[6]管建和,王紹燕.基于ATL實現(xiàn)通用報表工具COM控件[J].計算機工程與設計,2007,28(17):4241-4242,4256.

[7]高鵬.基于動態(tài)DW+Formula1技術的集成式通用報表模型研究[J].計算機應用與軟件,2009,26(11):137-140.

[8]王勇超,張璟,馬靜,等.利用XML和Excel設計動態(tài)通用報表系統(tǒng)的新方法[J].現(xiàn)代電子技術,2008,31(18):93-96.

[9]周一,王世耕,黃忠全,等.基于FastReport的通用報表系統(tǒng)的設計與實現(xiàn)[J].計算機應用與軟件,2008,25(2):284-285.

[10]Charlie Calvert. Delphi5編程技術內幕[M].北京:機械工業(yè)出版社,2003.

主站蜘蛛池模板: 91精品久久久久久无码人妻| 欧美精品高清| 欧美国产菊爆免费观看| 国产成人精品男人的天堂下载 | 一级香蕉视频在线观看| 精品国产自| 欧美97色| 国产91久久久久久| 自拍偷拍欧美日韩| 欧美特黄一免在线观看| 国产人人射| 成年A级毛片| 国产日产欧美精品| 国产精品亚洲一区二区三区z| 亚洲精品无码久久毛片波多野吉| 免费一级毛片在线观看| 国产日产欧美精品| 91精品啪在线观看国产60岁 | 国产jizz| 久久久噜噜噜| 日韩午夜伦| 精品第一国产综合精品Aⅴ| 国产尹人香蕉综合在线电影| 2022国产无码在线| 亚洲国产中文欧美在线人成大黄瓜 | 日韩中文无码av超清| 亚洲无码高清免费视频亚洲| 日韩av无码精品专区| 午夜国产精品视频| 亚洲人成在线免费观看| 久久永久免费人妻精品| 97视频免费看| 国内毛片视频| 欧美日韩精品一区二区在线线| 在线免费观看AV| 动漫精品中文字幕无码| 一级毛片免费不卡在线| 午夜a级毛片| 日本AⅤ精品一区二区三区日| 狠狠久久综合伊人不卡| 高潮爽到爆的喷水女主播视频| 波多野结衣无码中文字幕在线观看一区二区 | 成人免费黄色小视频| 亚洲无码视频喷水| 97se亚洲综合在线| 伦伦影院精品一区| 日韩黄色在线| аv天堂最新中文在线| 久久国产精品77777| 久久天天躁狠狠躁夜夜躁| 国产成人综合久久精品尤物| 国产中文一区a级毛片视频| 成人在线不卡| 9丨情侣偷在线精品国产| 波多野结衣国产精品| 99热6这里只有精品| 99草精品视频| 国产特级毛片aaaaaaa高清| 亚洲国产av无码综合原创国产| 色成人综合| 蜜芽一区二区国产精品| 欧亚日韩Av| 狠狠色狠狠综合久久| 欧美区在线播放| 国产综合日韩另类一区二区| 日韩a在线观看免费观看| 日韩AV手机在线观看蜜芽| 久久91精品牛牛| 国产精品林美惠子在线播放| 久久综合九色综合97婷婷| 久久精品亚洲中文字幕乱码| 国产毛片一区| 久久久国产精品免费视频| 日本成人在线不卡视频| 国产一二三区在线| 在线国产毛片| 三上悠亚在线精品二区| 播五月综合| 中文字幕久久波多野结衣| 2021国产v亚洲v天堂无码| 亚洲国产中文精品va在线播放| 婷婷午夜影院|