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個出來要怎麼做呢?而且要多次可以取隨機的,就是...