開發自己的Excell控制元件 (轉)
對於員特別是從事資訊管理的程式設計師來說,報表列印是整個程式設計過程中最麻煩但又必須做的事情,我們常用的方法就是:
一、將記錄匯出到l中;
二、用CrystalReport或ActiveReport等報表工具生成報表然後再在程式中;
三、直接列印窗體;
對於第一種方法網上有許多文章介紹了怎樣將資料表記錄匯入到Excell中並怎樣Excell單元格式以便做出合適的報表,但是這種方法也有許多不便之處,一是的上必須Excell,這顯然不現實(當然的另當別論),二是Excell自帶的是控制元件,雖然仍支援ActiveX控制元件,但這與.Net的發展趨勢顯然是不相符的。
對於第二種方法網上與CrystalReport或ActiveReport相關的資料很少,而且使用也相當複雜,怎麼製作報表全憑程式設計師自己摸索。
對於第三種方法除非想證明自己是菜鳥,否則沒有人會使用。
既然如此,我們可不可以利用.Net提供的強大功能自己開發類似於Excell的控制元件呢?其實要開發一個控制元件只要做兩件事,其一是定義各種屬性和方法,其二是根據各種屬性繪製控制元件介面。
下面我們來分析一下Excell的結構,Excell呈現給我們的是一張二維結構的表格,每一行相當於資料表的一個記錄,每一列相當於資料表的欄位。但Excell的每個單元又有許多的格式控制元件單元的呈現方式,這就是Excell與別的表格控制元件如DataGrid不相同的地方,那麼如何實現每個單元都有不同的呈現方式呢?
首先我們可以定義一個類名稱假設為DataCell,這個類定義了各種屬性比如:背景顏色、文字顏色、文字字型、對齊方式、文字折行、單元寬度、單元高度等等,然後我們定義一個Arraylist,名稱假設為DataRow,一個DataRow載入適當數量的DataCell物件,這個DataRow物件就相當於Excell的一行記錄。
第二步我們再定義一個Arraylist物件,名稱假設為DataTable,每個DataTable又載入一定數量的DataRow,那麼這個DataTable物件其實就是一個有一定數量記錄的二維表格了,只是這個表格的單元都有不同的格式。
第三步就是繪製控制元件介面了,在這一步我們可以利用Graphics的DrawString、DrawLine、DrawRectangle、強大功能,根據DataCell物件提供的不同格式任意繪製控制元件介面了。
筆者根據上面的思路編制了一個類似於Excell的控制元件,雖然功能不如Excell強大,但對付一般的報表是足足有餘了,您不想試試嗎?
主頁地址:
地址::namespace prefix = o ns = "urn:schemas--com::office" />
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10790690/viewspace-961293/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS開發之將自己寫的小控制元件釋出到Github上iOS控制元件Github
- DirectShow系列講座之三——開發自己的Filter (轉)Filter
- 自己動手用c#寫控制元件(上) (轉)C#控制元件
- 自己動手用c#寫控制元件(下) (轉)C#控制元件
- Oracle CEO:可能會開發自己的Linux系統(轉)OracleLinux
- HTML事件的控制元件觸發 (轉)HTML事件控制元件
- 《SELF 自己》開發心路
- 使用ActiveX控制元件開發網頁常見的問題 (轉)控制元件網頁
- 自己平常開發常用的jq方法
- 如何開發一個自己的 RubyGem?
- 用Visual C# .NET開發簡單的複合控制元件 (轉)C#控制元件
- 快速開發UI控制元件UI控制元件
- 自己公司網站開發網站
- 如何開發自己的 yeoman 腳手架
- SpringBoot開發自己的@Enable功能Spring Boot
- 如何用node開發自己的cli工具
- 開發一個自己的 CSS 框架(一)CSS框架
- 分享自己的C#開發類庫C#
- XPages 開發實踐:開發通用的 Tree View 定製控制元件View控制元件
- 如何開發FineReport的自定義控制元件?控制元件
- 開發人員提升自己的四種方式
- 開發自己的工具庫(一):專案搭建
- 如何開發自己的數字藏品系統?
- 用lazarus瞬間開發自己的安卓APP安卓APP
- iOS開發系列--打造自己的“美圖秀秀”iOS
- iOS開發系列–打造自己的“美圖秀秀”iOS
- Wizard Framework:一個自己開發的基於Windows Forms的嚮導開發框架FrameworkWindowsORM框架
- 新的iOS開發方式,無需伺服器,做自己的前端轉原生iOS app的框架iOS伺服器前端APP框架
- 直播平臺開發難嗎?自己開發須謹慎
- 開發ActiveX控制元件的實踐(1)--用VS2010開發一個簡單的TestOcx控制元件控制元件
- 構建屬於自己的Flutter混合開發框架Flutter框架
- 新手如何快速製作和開發自己的小程式
- 分享一個自己開發的 react拖拽排序元件React排序元件
- 那些需要自己開發的安全需求(服務端)服務端
- 寫給自己的git多人開發最佳實踐Git
- vagrant + centos/7 搭建自己的本地開發環境CentOS開發環境
- 微軟開發自己的 Linux 作業系統微軟Linux作業系統
- 僅供自己使用的javascipt輔助開發工具Java