如何用excel程式設計,如何在excel中程式設計?

時間 2021-07-08 21:36:50

1樓:久落江邊

基本思路

基礎實現方法同上篇文章《直接通過odbc讀、寫excel**檔案》相同,都是通過odbc來把excel**檔案當成資料庫檔案來進行讀、寫等操作,所以在excel**檔案中寫入的行頭名必須是唯一的(不要重名,相當於資料庫中的id值)。本文中對excel檔案的操作都被封裝進一個類cspreadsheet中,通過它我們可以非常簡便的實現各種excel**資料操作,並且可以對該類進行擴充來滿足自己的需求。

具體實現

一、 包含excel檔案操作類標頭檔案

#include "cspreadsheet.h"

二、 新建excel檔案,並寫入預設資料

// 新建excel檔名及路徑,testsheet為內部表名

cspreadsheet ss("c:\\test.xls", "testsheet");

cstringarray samplearray, testrow;

ss.begintransaction();

// 加入標題

samplearray.removeall();

samplearray.add("姓名");

samplearray.add("年齡");

ss.addheaders(samplearray);

// 加入資料

cstring strname = ;

cstring strage  = ;

for(int i = 0; i < sizeof(strname)/sizeof(cstring); i++)

samplearray.removeall();

samplearray.add(strname[i]);

samplearray.add(strage[i]);

ss.addrow(samplearray);

ss.commit();

三、 讀取excel檔案資料

cspreadsheet ss("c:\\test.xls", "testsheet");

cstringarray rows, column;

//清空列表框

m_accesslist.resetcontent();

for (int i = 1; i <= ss.gettotalrows(); i++)

// 讀取一行

ss.readrow(rows, i);

cstring strcontents = "";

for (int j = 1; j <= rows.getsize(); j++)

if(j == 1)

strcontents = rows.getat(j-1);

else

strcontents = strcontents +  " --> " + rows.getat(j-1);

m_accesslist.addstring(strcontents);

四、 對已存在excel**資料進行新增、插入、替換操作

// 初始化測試行資料,進行新增、插入及替換資料操作演示

for (int k = 1; k <= 2; k++)

testrow.add("test");

ss.addrow(testrow);  // 新增到尾部

ss.addrow(testrow, 2);  // 插入新行到第二行

ss.addrow(testrow, 6, true); // 替換原第四行來新的內容

ss.addcell("徐景周", 1,2);    // 新增(不存在)或替換(存在)第二行,第一列單元格內容

ss.commit();

五、 對已存在excel**資料進行行、列、單元格查詢

void cexcelaccessdlg::onquery()

cspreadsheet ss("c:\\test.xls", "testsheet");

cstringarray rows, column;

cstring tempstring = "";

updatedata();

if(m_strrow == "" && m_strcolumn == "")         // 查詢為空

afxmessagebox("行號、列號不能同時為空!");

return;

else if(m_strrow == "" && m_strcolumn != "")    // 查詢指定列資料

int icolumn = atoi(m_strcolumn);

int icols = ss.gettotalcolumns();

if(icolumn > icols) // 超出表範圍查詢時

cstring str;

str.format("表中總列數為: %d, ", icols);

afxmessagebox(str + " 查詢列數大於excel表中總列數,請重新輸入!");

return;

// 讀取一列資料,並按行讀出

if(!ss.readcolumn(column, icolumn))

afxmessagebox(ss.getlasterror());

return;

cstring tmpstr;

for (int i = 0; i < column.getsize(); i++)

tmpstr.format("行號: %d, 列號: %d ,內容: %s\n", i+1,icolumn,column.getat(i));

tempstring += tmpstr;

afxmessagebox(tempstring);

else if(m_strrow != "" && m_strcolumn == "")     // 查詢指定行數資料

int irow = atoi(m_strrow);

int irows = ss.gettotalrows();

if(irow > irows) // 超出表範圍查詢時

cstring str;

str.format("表中總行數為: %d, ", irows);

afxmessagebox(str + " 查詢行數大於excel表中總行數,請重新輸入!");

return;

// 讀取指定行資料

if(!ss.readrow(rows, irow))

afxmessagebox(ss.getlasterror());

return;

cstring tmpstr;

for (int i = 0; i < rows.getsize(); i++)

tmpstr.format("行號: %d, 列號: %d ,內容: %s\n", irow, i+1, rows.getat(i));

tempstring += tmpstr;

afxmessagebox(tempstring);

else if(m_strrow != "" && m_strcolumn != "")     // 查詢指定單元格資料

int irow = atoi(m_strrow), icolumn = atoi(m_strcolumn);

int irows = ss.gettotalrows(), icols = ss.gettotalcolumns();

if(icolumn > icols)             // 超出表範圍查詢時

cstring str;

str.format("表中總列數為: %d, ", icols);

afxmessagebox(str + " 查詢列數大於excel表中總列數,請重新輸入!");

return;

else if(irow > irows)

cstring str;

str.format("表中總行數為: %d, ", irows);

afxmessagebox(str + " 查詢行數大於excel表中總行數,請重新輸入!");

return;

// 讀取指定行、列單元格資料

if(!ss.readcell(tempstring, icolumn, irow))

afxmessagebox(ss.getlasterror());

return;

cstring str;

str.format("行號: %d, 列號: %d ,內容: %s", irow,icolumn,tempstring);

afxmessagebox(str);

六、 將存在的excel轉換另存為指定分隔的文字檔案

// 將原excel檔案轉換為用分號分隔的文字,並另存為同名文字檔案

ss.convert(";");

七、 刪除excel中**

ss. deletesheet();            // 刪除excel檔案中所有**

ss. deletesheet(" testsheet ");  // 刪除excel中textsheet**

八、 獲取excel中總行數、總列數、當前行

int icols = ss.gettotalcolumns();   // 總列數

int irows = ss.gettotalrows();    // 總行數

int icurrow = ss.getcurrentrow(); // 當前所在行號

九、 獲取行頭資料

cstringarray rowheader;

ss.getfieldnames(rowheader);

cstring tmpstr;

for (int i = 0; i < rowheader.getsize(); i++)

tmpstr.format("行號: %d, 列號: %d ,內容: %s\n", 1, i+1, rowheader.getat(i));

tempstring += tmpstr;

afxmessagebox(tempstring);

如何在excel中程式設計?

2樓:ace丶尛小磊

一、工具: microsoft office excel二、操作步驟

1. 雙擊開啟桌面的excel。

2. 單擊右上角的office圖示,找到excel選項,單擊開啟。

3. 勾選在功能區顯示「開發工具」選項卡,單擊確定按鈕完成修改。

4. 單擊選單欄的開發工具,然後找到visual basic單擊開啟便可以進行相關的vba程式設計。

如何在excel中插入logo,如何在excel中插入pdf檔案

excel不像word那樣有水印的功能。所以有些麻煩。可試試用格式 工作表 背景的方法,但這個方法的缺點是,只能顯示水印,不能列印水印。如果要列印出來,有如下變通的辦法 先準備好的需要插入的 用影象處理工具先處理成水印的效果。並調整與頁面大小相同。方法一 1 格式 工作表 背景 選擇一張 插入。2 ...

如何用excel做多元迴歸分析,如何用excel做多元線性迴歸分析

在日常資料分析工作當中,迴歸分析是應用十分廣泛的一種資料分析方法,按照涉及自變數的多少,可分為一元迴歸分析和多元迴歸分析 按照自變數和因變數之間的關係型別,可分為線性迴歸分析和非線性迴歸分析。迴歸分析的實施步驟 1 根據 目標,確定自變數和因變數 2 建立迴歸 模型 3 進行相關分析 4 檢驗迴歸 ...

如何利用Excel工具進行抽樣,如何用excel進行抽樣

御溥五潔 用excel資料分析工具進行抽樣 奇點人生 用excel資料分析工具進行抽樣有二種方法 第一種 舉例 excel 中一列有3000多個資料,我想在這3000多個資料中隨機抽取200個出來,3000多個都是文字的資料在一列裡面,要隨機抽取出200個出來要怎麼做呢?而且要多次可以取隨機的,就是...