/*------------------------------------------------- //目前真正最全的OLE操作Excel的完整程式碼 //版本:2007.01.15.01 //C+
摘要:利用C++ Builder 5.0視覺化的設計工具,強大方便的資料庫開發功能和Excel強大的電子表格處理功能,為處理多重報表和複雜報表提供一個良好的方法。
關鍵詞:OLE 自動化客戶程式 電子表格
Abstract: The paper provides a good method to make use of powerful database exploitation function of C++ Builder and powerful electron table management function of Excel 2000.
Key words: OLE,automation client programs,electron table
一 引言
C++ builder 5.0是Inprise公司推出的基於C++語言的視覺化開發語言,不僅具有新穎的視覺化設計工具,還配有資料庫引擎,可以通過SQL連線或ODBC訪問多種資料庫,並具有開發基於Client/Server模式的資料庫應用程式的能力。當我們進行資料庫軟體開發的時候,一般要進行大量報表設計,尤其當涉及到設計多重報表或交叉報表時,我們會覺得力不從心。利用EXCEL強大的電子表格處理功能,可以解決C++ Builder 自帶報表工具功能少的缺陷。
C++ Builder呼叫Excel常用的方法有兩種:一種是利用OLE技術呼叫Excel。OLE(物件的連線和嵌入)是微軟公司提出的標準,它提供了一種用源於不同應用程式的資訊建立複合文件的強有力方法。第二種是利用ODBC資料庫技術呼叫Excel。第一種方法比較簡單,方便,本文討論的是第一種方法。
二 系統功能要求
隨著電子化辦公的推廣和保險業務的全面開展,賬本式的管理方法已不能對資料龐大的電子化裝置進行合理有效的管理,這就要求電子化的管理方式,通過計算機和公司區域網實現對裝置進行管理。我們開發的電子化管理軟體由電子化裝置管理資料庫、電子化裝置耗材管理資料庫組成,資訊科技管理人員可以對本資料庫進行新增、刪除、修改、查詢等操作,並且可以列印各種查詢表格,表格按照EXCEL格式進行列印,並且儲存歸檔。
C++Builder軟體自帶建立報表工具,如QReport控制元件。但是相對於EXCEL強大的電子表格處理功能和方便的操作而言,QReport控制元件功能就顯得很蒼白。在該管理軟體中,我們將查詢結果自動生成EXCEL表格,然後在EXCEL環境下進行列印或者儲存檔案。具體函式實現在下面的段落中進行詳細說明,並且都給出示例。
三 函式的實現
要在應用程式中控制Excel2000的執行,首先必須在編制自動化客戶程式時使其標頭檔案要包含Comobj.hpp和Utilcls.h。
即:#include
#include
C++ Builder開發者把Excel自動化物件的功能包裝在下面的四個Ole Object Class函式中,應用人員可以很方便地進行呼叫。
設定物件屬性:Variant OlePropertySet(屬性名,引數……);
獲得物件屬性:void OlePropertyGet(屬性名,引數……);
呼叫物件方法:1) Variant OleFunction(函式名,引數……);
2) void OleProcedure(過程名,引數……);
C++ Builder中使用OLE控制Excel2000,必須掌握Excel2000的自動化物件及Microsoft Word Visual Basic幫助檔案中的關於Excel的物件、方法和屬性。物件是一個Excel元素,屬性是物件的一個特性或操作的一個方面,方法是物件可以進行的動作。
1、Excel中常用的物件是:Application,Workbooks,Worksheets等。
(1) 建立應用物件:如:
Variant ex;
ex=Variant::CreateObject ("Excel.Application");
或者 ex=CreateOleObject ("Excel.Application");
(2) 建立工作簿物件:
Variant wb;
wb=ex.OlePropertyGet("ActiveWorkBook");
(3) 建立工作表物件:
Variant sheet;
sheet=wb.OlePropertyGet("ActiveSheet");
(4) 建立區域物件:
Variant range;
range=sheet.OlePropertyGet("Range","A1:A10");
2、常用的屬性操作:
(1)新建EXCEL檔案:
(a):新建系統模板的工作簿
ex.OlePropertyGet("workbooks").OleFunction("Add") //預設工作簿
ex.OlePropertyGet("workbooks").OleFunction("Add",1) //單工作表
ex.OlePropertyGet("workbooks").OleFunction("Add",2) //圖表
ex.OlePropertyGet("workbooks").OleFunction("Add",3) //巨集表
ex.OlePropertyGet("workbooks").OleFunction("Add",4) //國際通用巨集表
ex.OlePropertyGet("workbooks").OleFunction("Add",5) //與預設的相同
ex.OlePropertyGet("workbooks").OleFunction("Add",6) //工作簿且只有一個表
(b):新建自己建立的模板的工作簿
ex.OlePropertyGet("workbooks").OleFunction("Add","C:\\WINDOWS\\Profiles\\test2\\Application Data\\Microsoft\\Templates\\result.xlt"); // 後面寫上模板的完全路徑,注意"\\"
(2)開啟工作簿:
ex.OlePropertyGet("workbooks").OleFunction("open","路徑名.xls")
(3)儲存工作簿:
wb.OleFunction("Save"); //表格儲存
wb..OleFunction("SaveAs","檔名"); //表格儲存為,檔案路徑注意用"\\"
(4)退出EXCEL:
ex.OleFunction ("Quit");
(5)設定字型:
(a):設定單元格字型
sheet.OlePropertyGet("Cells",1,1).OlePropertyGet("Font").OlePropertySet("Name","隸書");
sheet.OlePropertyGet("Cells",2,3).OlePropertyGet("Font").OlePropertySet("size",28);
(b):設定所選區域字型
range.OlePropertyGet("Cells").OlePropertyGet("Font").OlePropertySet("size",28); range.OlePropertyGet("Cells").OlePropertyGet("Font").OlePropertySet("Color",
RGB(0,0,255));
其中引數的設定:
Font---Name : "隸書" //字型名稱
----Size : 12 //字型大小
----Color : RGB(*,*,*) //顏色
-----Underline : true/false //下劃線
-----Italic: true/false //斜體
(6)單元格的合併:
(a) range1=sheet.OlePropertyGet("Range", "A1:A2"); //A1和A2單元格合併
(b) AnsiString Str="A"+IntToStr(j)+":"+"C"+IntToStr(j);
range1=sheet.OlePropertyGet("Range",Str); //可以用變數控制單元格合併
range1.OleFunction("Merge" , false);
(7)賦值語句:
(a):指定單元格賦值
sheet.OlePropertyGet("Cells",3,6).OlePropertySet("Value",str);
sheet.OlePropertyGet("Cells",j,1).OlePropertySet("Value","共查到記錄:"+IntToStr(j-6));
(b):所選區域單元格賦值
range.OlePropertyGet("Cells").OlePropertySet("Value",10);
(c):所選區域行賦值
range.OlePropertyGet("Rows",1).OlePropertySet("Value",1234);
(d):工作表列賦值
sheet.OlePropertyGet("Columns",1).OlePropertySet("Value",1234);
(8)取值語句:
AnsiString abc=sheet.OlePropertyGet("Cells",120,1).OlePropertyGet("Value");
(9)區域選擇:
range.OlePropertyGet("Cells").OleFunction("Select");
(10)視窗屬性:
(a)顯示屬性
ex.OlePropertySet("Windowstate",3); //最大化顯示
引數 1---------xlNormal //正常顯示
2---------xlMinimized //最小化顯示
3---------xlMaximized //最大化顯示
(b)狀態列屬性
ex.OlePropertySet ("StatusBar","您好,請您稍等。正在查詢!");
ex.OlePropertySet ("StatusBar", false); //還原成預設值
(c)標題屬性:
ex.OlePropertySet("Caption","查詢系統");
相關推薦
/*------------------------------------------------- //目前真正最全的OLE操作Excel的完整程式碼 //版本:2007.01.15.01 //C+
//---------------------------------------------------------------------------------------------------------- 摘要:利用C++ Builder 5.0視覺化的設計工具,強大方便的資料庫開發功能和Exce
最全的OLE操作Excel的完整程式碼(1)
//選擇單元格: //sh.OlePropertyGet("Cells").OleFunction("Select");//選擇所有單元格 //sh.OlePropertyGet("Cells",3,3).OleFunction("Select");//選擇指定單元格(指定的單元格獲得焦點) /*------
最全的OLE操作Excel的完整程式碼(2)
//---------------------------------------------------------------------------------------------------------- 摘要:利用C++ Builder 5.0視覺化的設計工具,強大方便的資料庫開發功能和Exce
一張圖看懂小程式全生態!目前總結最全的,沒有之一
本文為微信公眾號“造個程式(ID:zgcx007)”原創,授權CSDN首發,版權歸作者所有。 責編:陳秋歌,關注微信開發等領域,尋求報道或者投稿請發郵件至chenqg#csdn.net。 2017年1月9日,小程式釋出在萬眾矚目中釋出,不僅佔據了輿論的風口,也經歷了不少起伏。6月9日小程式釋出半年。
2018目前最新最全FFmpeg音視訊核心技術精講+實戰
第1章 課程導學與準備工作全民娛樂時代,需要音視訊等多媒體產品層出不窮,但會處理音視訊資料的工程師卻極度匱乏,進入音視訊開發領域正當時,這門課程就是為這樣的你而生。來吧!加入我們,成就更好的自己。1-1 課前必讀(不看會錯過一個億)1-2 課程導學1-3 音視訊的應用範圍與播放器架構講解(選看
目前為止最全的微信小程式專案例項
audiodemo 微信小程式開發之視訊播放器 Video 彈幕 彈幕顏色自定義 star 微信小程式開發之五星評分 switchCity 微信小程式開發之城市選擇器 城市切換 kangaiduowei 微信小程式:康愛多微商城:學習介面
使用Win32::OLE操作Excel——Excel物件模型
像VBA操作Excel一樣,Win32::OLE模組也是通過物件操作來控制Excel。 如果想自動化操作和控制Excel應用程式,則必須要與Excel物件模型所提供的物件進行互動。理解和熟悉Excel物件模型,就可以更容易的操作Excel。 Excel物件模型提供了很多物件[
史上最全: svn與git的對照(二):svn與git的相關概念
fill 來看 out avi head clas 相關 iss b2c 如圖1是svnserver端數據的文件夾結構 以下是gitserver端的文件夾結構 縱觀svn和git服務端的文件夾結構我們非常easy發現 1.有些目錄還是蠻像的。甚
關於python操作excel的程式碼及一些感悟
首先我們來看看一些python操作excel的主流包: xlrd-----excelread xlwt------excelwrite xlutils openpyxl
2018年最全微專業之前端開發工程師:零基礎完成MIni專案開發
課程目錄 CSS基礎.zip DOM程式設計藝術.zip HTML入門.zip JavaScript程式設計.zip JavaScrip
散列表查詢(雜湊表)的基本操作 (完整程式碼)
表和二叉樹的排序,是利用元素之間的關係,逐個查詢,或按一定的規律查詢。 而散列表(雜湊表),元素之間沒有關係,它是利用了元素與儲存地址之間的關係。 說白了,就是利用雜湊函式建立 元素->地址
二叉排序樹的基本操作(完整程式碼)
以下是二叉排序樹的基本操作,函式基本與《大話資料結構》裡的程式碼類似,包括查詢、插入、刪除操作。完整程式碼,可直接執行。 //二叉排序樹 //其中有插入、刪除、查詢操作 #include<s
順序線性表的插入,刪除操作(完整程式碼)
1..插入 :在順序線性表l的第i個位置前插入元素e 。 第一步判斷插入位置是否合法,如果不合法則異常退出。第二步判斷線性表儲存空間是否不足,如果不足則增加儲存容量。第三步將插入位置及之後元素後移。第四步將待插入元素插入。 2..刪除:從順序線性表l中刪除第
【福利】BAT架構師分享最全Java架構師學習技能圖譜:包含Java程式設計+網路+設計模式+資料庫+分散式等
**【福利】**總結了一份架構圖譜,希望對想成為架構師的朋友有一定的參考和幫助。 我簡短談下目前大家關心的話題:網際網路裁員浪潮裡,大家會發現一般裁員會先從可替代性的業務性程式設計師開始,原因很簡單,由於日常負責專案大部分都是業務性的,真正有技術實力提升機會非常有限,平時工作繁忙,忽略了
最全Redis49個面試題目及答案:執行緒設計+哨兵+複製+事務+叢集+持久化等
Redis支援哪幾種資料型別? 支援多種型別的資料結構 1.string:最基本的資料型別,二進位制安全的字串,最大512M。 2.list:按照新增順序保持順序的字串列表。 3.set:無序的字串集合,不存在重複的元素。 4.sorted set:已排序的字串集合。
【收紅包】最新最全!春節搶紅包攻略:又到參與幾個億專案的時候了…
關注我們有了這個攻略你就可以踏實搶紅包了!盤點幾家紅包大戶在搶紅包之路上助你們一臂之力~騰訊QQ
最全BAT算法面試100題:阿裏、百度、騰訊、京東、美團、今日頭條
分享 下一個 向量 估算 解決 重復數 後繼 最全 find 第一:復雜度估算和排序算法(上)1) 時間復雜度和空間復雜度 2)認識對數器 3)冒泡排序 4)選擇排序 5)插入排序 6)如何分析遞歸過程的時間復雜度 7)歸並排序 8)小和問題 第二:復雜度估算和排序算法(下
最全面的Java字節byte操作,處理Java基本數據的轉換及進制轉換操作工具,流媒體及java底層開發項目常用工具類
進制 string 常用工具類 cat i++ logs 指定位置 tput off 前言:用於處理Java基本數據的轉換及進制轉換操作工具 一、實現功能 1、int預byte互轉 2、int與byte[]互轉 3、short與byte互轉 4、short與byte[]互轉
目前最全的python的就業方向
PythonPython是一門面向對象的編程語言,編譯速度超快,從誕生到現在已經25個年頭了。它具有豐富和強大的庫,常被稱為“膠水語言”,能夠把用其他語言編寫的各種模塊(尤其是C/C++)很輕松地聯結在一起。其特點在於靈活運用,因為其擁有大量第三方庫,所以開發人員不必重復造輪子,就像搭積木一樣,只要擅於利用這