第一種方法,簡單的,用cdatabase實現. 程式是乙個基於對話方塊的,步驟:
a,為了避免**重複,設定下面幾個全域性變數(類範圍的),要引入標頭檔案
cdatabase m_db; //資料庫
cstring m_dbdriver; //要生成的excel檔案的目錄
char m_path[max_path]; //獲取路徑用的陣列
cstring m_strdir; //包括excel檔名在內的路徑名.
cstring m_strsql; //sql命令語句,用m_db可直接執行.
b,在oninitdialog方法中,生成乙個xls檔案,並插入兩條記錄,可在try語句中進行,因為這裡面要建立一張表,當再次啟動程式時,會有異常發生,說表已經存在了,這時就避免了重複建立和插入.**如下:
m_dbdriver="microsoft excel driver (*.xls)";
getcurrentdirectory(max_path,m_path);
m_strdir=m_path;
m_strdir+="//test.xls"; //上面初始化各個變數.
m_strsql.format("driver=;dsn='''';firstrowhasnames=1;readonly=false;create_db=/"%s/";dbq=%s",m_dbdriver,m_strdir,m_strdir);
try}
catch_all(e)
end_catch_all;
c,其實上面已經達到了答題人的要求,但作為乙個程式,這也太不像話了,於是我又稍微加了點不值一提的東西,在對話方塊上輸入資訊,再插入到excel表中去,這一切都在按下"插入"按鈕後發生:
updatedata();
m_strsql.format("driver=;dsn='''';firstrowhasnames=1;readonly=false;create_db=/"%s/";dbq=%s", m_dbdriver,m_strdir,m_strdir);
try}
catch_all(e)
end_catch_all;
m_db.close();
可以說,只要對cdatabase稍有了解,對sql語句稍有了解,這個問題就很容易解決,如果要說這是乙個針對excel檔案操作的方法,那是因為在openex初始化資料庫物件(不是"開啟"哦)時用的檔案字尾名為.xls而已,我們可以像在普通的資料庫中一樣進行其他操作,如用select語句來讀取excel檔案的內容等, 第一種方法完.
下面是第二種方法,這裡涉及的原理要複雜一些了,傳說中的ole(物件鏈結與嵌入)技術在這裡用上了,excel.exe作為乙個元件伺服器,應用程式作為客戶端......,還是直接寫過程吧,頭暈暈的,只能平鋪直述了.
b,在dlg.h中宣告下面幾個變數:
d,與上面第一種方法一樣,可以插入記錄:
updatedata(); //讀入資料
if (""==m_name) //判斷名字輸入有效
if (0>=m_age||100<=m_age) //判斷年齡輸入有效
char *p=strupr(_strdup(m_gener));
if (strcmp(p,"female")&&strcmp(p,"male")) //判斷性別輸入有效
兩種VC操縱EXCEL的方法
第一種方法,簡單的,用cdatabase實現.程式是乙個基於對話方塊的,步驟 a,為了避免 重複,設定下面幾個全域性變數 類範圍的 要引入標頭檔案 cdatabase m db 資料庫 cstring m dbdriver 要生成的excel檔案的目錄 char m path max path 獲取...
VC操縱EXCEL的兩種方法
第一種方法,簡單的,用cdatabase實現.程式是乙個基於對話方塊的,步驟 a,為了避免 重複,設定下面幾個全域性變數 類範圍的 要引入標頭檔案 cdatabase m db 資料庫 cstring m dbdriver 要生成的excel檔案的目錄 char m path max path 獲取...
VC 中dll的兩種匯出方法
若要確定用於匯出函式的方法 def 檔案或 declspec dllexport 關鍵字 請回答下列問題 在 def 檔案中匯出函式使您得以控制匯出序號。當將附加的匯出函式新增到 dll 時,可以給它們分配更高的序號值 高於任何其他匯出函式 當您進行此操作時,使用隱式鏈結的應用程式不必與包含新函式的...