最近寫了乙個小工具,使用到了vc6.0對excel的操作,蒐集了些檔案資料以及自己的的總結,記錄下。
這裡共總結了兩種對excle的操作,一種為通過excle物件,一種為通過odbc服務; 1,
通過excle物件
1.1,
excle物件使用類
2.
表示整個的
excel
應用程式,包含乙個工作簿集合
3.
workbooks:
工作簿集合,包含
n個工作簿
(workbook)
4.
_workbook:
工作簿,包含乙個工作表
(sheets)
集合5.
worksheets:
工作表集合,包含
n個工作表
6.
_worksheet:
工作表,也就是我們在
excel
中看到的
sheet1
、sheet2
、sheet3
,它是我們操作
excel
的基本單位
7.
range:
這是單元格的集合,我們知道
excel
是由乙個個的單元格組成的,通過
range
來操作單元格
物件。物件表示
excel
應用程式本身。
物件提供了大量有關正在執行的應用程式、應用於該例項的選項以及在該例項中開啟的當前使用者的物件的資訊。
workbook物件。
workbook
類表示excel
應用程式內的單個工作簿。
類的許多成員同時也是
workbook
類的成員。在這種情況下,屬性應用於特定的工作簿(而非應用於活動工作簿)。
worksheet物件。雖然
worksheet
類提供了大量成員,但大部分屬性、方法和事件都與和/
或workbook
類提供的成員相同或相似。
excel
提供sheets
集合作為
workbook
物件的屬性,但
excel
中沒有sheet
類。實際上,
sheets
集合的每個成員不是
worksheet
物件就是
chart
物件。 range物件。
range
物件是excel
應用程式中最常用的物件。在能夠處理
excel
內的任何範圍之前,必須將它表示為
range
物件,並處理該物件的方法和屬性。
range
物件表示乙個單元格、一行、一列、包含乙個或多個單元格塊(可以連續,也可以不連續)的單元格選定範圍,甚至多個工作表中的一組單元格。
1.2,com
支援庫的初始化
通常在的initinstance()
裡面加入初始化和關閉
com庫的操作,在
domodal()
呼叫之前加入初始化的**,如:
1.if(coinitialize(null) != 0)
2. 在
return
之前加入
couninitialize();
關閉con庫
如果執行某些操作出現
「正在執行中
,此操作無法完成
.請選擇
'切換到
'來啟用正在執行中的程式
,並更正問題
」警告,則在是由於自動化服務超時引起,在
裡afxoleinit()
之後加上如下語句
:afxolegetmessagefilter()->enablebusydialog(false);
afxolegetmessagefilter()->setbusyreply(servercall_retrylater);
afxolegetmessagefilter()->enablenotrespondingdialog(true);
afxolegetmessagefilter()->setmessagependingdelay (-1);
如果增加之後編譯不通過,增加標頭檔案
#include
1.3,**實現
首先別忘了包含標頭檔案
「excel.h」
,若用到
_variant
_t()
時,需要包含標頭檔案
「comdef.h」
和「comutil.h」
,否則會出現錯誤:
「errorc2065
: '_
variant
_t' :undeclaredidentifier」
。1.
.h檔案:
2.
#include"comdef.h"
3.
#include"excel.h"
4.
clas***celfile
5. ;
30.
.cpp檔案:
31.
excelfile::excelfile()
32.
34.
excelfile::~excelfile()
35.
42.
void excelfile::initexcel()
43.
50. }
51.
void excelfile::releaseexcel()
52.
55.
bool excelfile::open(cstring filename)
56.
69.
return false;
70. }
71.
72.
int excelfile::getsheetcount()
73.
76.
77.
cstring excelfile::getsheetname(int iindex)
78.
86.
bool excelfile::loadsheet(int iindex)
87.
98.
return false;
99. }
100.
intexcelfile::getcolumncount()
101.
111.
intexcelfile::getrowcount()
112.
122.
cstringexcelfile::getcell(int irow, int icolumn)
123.
132.
elseif (vresult.vt==vt_int)
133.
136.
elseif (vresult.vt==vt_r8) //8
位元組的數字
137.
142.
elseif(vresult.vt==vt_date) //
時間格式
143.
147.
elseif(vresult.vt==vt_empty) //
單元格空的
148.
151.
range.releasedispatch();
152.
returnstr;
153. }
154.
intexcelfile::getcellint(int irow, int icolumn)
155.
164.
voidexcelfile::showinexcel(bool bshow)
165.
VC 6 0 移位操作
本文記錄一下vc 6.0中c 語言下的移位操作,主要考慮會不會溢位,以及符號位的處理。首先區別一下算術移位與邏輯移位 算術左移同邏輯左移 算術右移高位補符號位 邏輯右移高位補0 1 左移操作 結論為 高位移出,低位補0 1 無符號數 我們考慮乙個特別的數 2147483647 恩,這個數很特別不用懷...
VC 6 0 開啟檔案出錯
上述方法來自文章 後來,發現了如下帖子 文中講到一種笨拙但很有效的方法,本人嘗試了一下,結果系統恢復正常。簡單總結一下 解除安裝office2007,vc6.0恢復正常,重新啟動計算機,重新安裝office2007。至此,office2007與vc6.0和平共處...
VC 6 0實現超連結
vc 6.0實現超連結 2011年05月03日 首先,新建乙個基於對話方塊的工程,新增乙個靜態文字框,id為idc html。caption為然後新增單擊訊息對映,新增以下 void cmydlg onhtml bool bblue false cfont cfont1 cfont cfont2 在...