VC匯出資料到EXCEL

2021-05-22 22:40:58 字數 4582 閱讀 3655

我們製作應用軟體的時候,經常要把結果以報表的形式輸出,當前使用較為廣泛的當然是excel**,本文簡略介紹在vc++6.0中如何使用excel2003的庫函式並對其進行程式設計。先建立乙個對話方塊工程,命名為vcexcel。在對話方塊中新增乙個按鈕,控制項id為id_runexcel,介面如下(是不是很搞笑哇,不過沒關係,它照樣能實現強大的功能!)。

再在該按鈕上新增訊息bn_clicked,其訊息對映函式為onrunexcel(),下面我們的工作就是要完成這個onrunexcel()函式。在這裡我們通過乙個例項來說明vc是如何呼叫excel2003的介面程式設計的。

我們要程式設計輸出乙個如下**。

afxmessagebox("初始化com失敗");

return false;

//把最後的檔名去掉

int length1,length2;

cstring temppath="";

m_exlbook.attachdispatch(m_exlbooks.add((_variant_t)temppath),true);//載入excel模板

m_exlsheets.attachdispatch(m_exlbook.getsheets(),true);//載入sheet頁面

//新增新的sheet頁面

m_exlsheets.add(vtmissing,vtmissing,_variant_t((long)1),vtmissing);

//刪除第二個sheet頁面

m_exlsheet.attachdispatch(m_exlsheets.getitem(_variant_t((long)2)),true);

m_exlsheet.delete();

//把第乙個sheet頁面的名字改變為testsheet

m_exlsheet.attachdispatch(m_exlsheets.getitem(_variant_t((long)1)),true);

m_exlsheet.setname("testsheet");

///合併第一行單元格a1至d1//

//載入要合併的單元格

m_exlrge.attachdispatch(m_exlsheet.getrange(_variant_t("a1"),_variant_t("d1")),true);

m_exlrge.merge(_variant_t((long)0));

設定**內容

m_exlrge.attachdispatch(m_exlsheet.getcells(),true);//載入所有單元格

m_exlrge.setitem(_variant_t((long)1),_variant_t((long)1),_variant_t("數學系研究生課程統計"));

m_exlrge.setitem(_variant_t((long)2),_variant_t((long)1),_variant_t("課程名"));

m_exlrge.setitem(_variant_t((long)2),_variant_t((long)2),_variant_t("課時"));

m_exlrge.setitem(_variant_t((long)2),_variant_t((long)3),_variant_t("難度"));

m_exlrge.setitem(_variant_t((long)2),_variant_t((long)4),_variant_t("教學方式"));

m_exlrge.setitem(_variant_t((long)3),_variant_t((long)1),_variant_t("泛函分析"));

m_exlrge.setitem(_variant_t((long)3),_variant_t((long)2),_variant_t("60"));

m_exlrge.setitem(_variant_t((long)3),_variant_t((long)3),_variant_t("普通"));

m_exlrge.setitem(_variant_t((long)3),_variant_t((long)4),_variant_t("老師講課"));

m_exlrge.setitem(_variant_t((long)4),_variant_t((long)1),_variant_t("微分流形"));

m_exlrge.setitem(_variant_t((long)4),_variant_t((long)2),_variant_t("40"));

m_exlrge.setitem(_variant_t((long)4),_variant_t((long)3),_variant_t("**難"));

m_exlrge.setitem(_variant_t((long)4),_variant_t((long)4),_variant_t("自學"));

m_exlrge.setitem(_variant_t((long)5),_variant_t((long)1),_variant_t("二階橢圓型方程與方程組"));

m_exlrge.setitem(_variant_t((long)5),_variant_t((long)2),_variant_t("60"));

m_exlrge.setitem(_variant_t((long)5),_variant_t((long)3),_variant_t("很難"));

m_exlrge.setitem(_variant_t((long)5),_variant_t((long)4),_variant_t("討論"));

m_exlrge.attachdispatch(m_exlsheet.getusedrange());//載入已使用的單元格

m_exlrge.setwraptext(_variant_t((long)1));//設定單元格內的文字為自動換行

//設定齊方式為水平垂直居中

//水平對齊:預設=1,居中=-4108,左=-4131,右=-4152

//垂直對齊:預設=2,居中=-4108,左=-4160,右=-4107

m_exlrge.sethorizontalalignment(_variant_t((long)-4108));

m_exlrge.setverticalalignment(_variant_t((long)-4108));

///設定整體的字型、字型大小及顏色//

font ft;

ft.attachdispatch(m_exlrge.getfont());

ft.setname(_variant_t("宋體"));//字型

ft.setcolorindex(_variant_t((long)11));//字的顏色

ft.setsize(_variant_t((long)12));//字型大小

///設定標題字型及顏色//

m_exlrge.attachdispatch(m_exlsheet.getrange(_variant_t("a1"),_variant_t("d1")));

ft.attachdispatch(m_exlrge.getfont());

ft.setbold(_variant_t((long)1));//粗體

ft.setsize(_variant_t((long)13));

ft.setcolorindex(_variant_t((long)2));

cellformat cf;

cf.attachdispatch(m_exlrge.getcells());

//設定底色/

interior it;

it.attachdispatch(m_exlrge.getinterior());

it.setcolorindex(_variant_t((long)11));//標題底色

**內容的底色

m_exlrge.attachdispatch(m_exlsheet.getrange(_variant_t("a2"),_variant_t("d5")));

it.attachdispatch(m_exlrge.getinterior());

it.setcolorindex(_variant_t((long)15));

//為**設定邊框/

range unitrge;

cstring cellname;

for(int i=1;i<=4;i++) }

小結:一年前就想寫這個東西了,因為網上講vc與office程式設計的資料實在是太少了,即使有也很片面(vb講這方面的東西卻又多又全,鬱悶~),想當初做這個東西的時候上網查資料快查瘋掉了,最後還是一堆問題沒有解決。哈哈,現在無聊靜下心來一研究發現原來vc蹂躪excel也不是一件難事啊,在這個例子裡面包含了很多常用的功能,相信做一般的報表是沒什麼問題的。要是做更複雜的報表怎麼辦呢?乙個例子也不可能包括方方面面呀,那確實,因此有很多東西是需要讀者自己**的。下面我告訴大家乙個方法,細心的讀者可能已經發現有些引數不知道是從**蹦出來的,例如:水平對齊:預設=1,居中=-4108,左=-4131,右=-4152。這就要用到office的巨集錄製功能(什麼?你沒聽過?網上去查吧^__^),把你要的操作用巨集錄製下來,然後用vb開啟,單步除錯的時候就能發現這些秘密了!上面例子中的引數都是dodo在巨集裡面找到滴,哈哈,是不是很簡單?快去試試吧~

匯出資料到Excel

最近做到了匯出資料這乙個功能,所以寫一下關於匯出資料的文獻,說一下自己是怎麼去做這乙個功能的。在我們要匯出資料之前,我們要查詢出我們要匯出的資訊,由於這裡是c 我就直接放圖了,下面是我自己資料庫中查詢的一些資訊 查詢出我們的資料後。我們要使用npoi來將我們的資訊寫入我們的文件中。npoi 是指構建...

匯出資料到Excel

使用npoi從資料庫中匯出資料到excel 新增npoi.dll程式集 下面 步驟解析 首先拿到要匯出的資料data,定義好excel模板 名稱 filename 可以放在本地 1 往excel模板中填充內容 writetofile data,filename filestream 物件讀取出來的是...

匯出資料到excel

protected sub cmdorderexport click byval sender as object,byval e as eventargs handles cmdorderexport.click try me.buildcondition dim ht as hashtable ...