開啟excel的vba幫助,檢視excel的物件模型,很容易找到完成這個功能需要的幾個集合和物件:
跟word物件模型不一樣的是,excel物件模型沒有提供find物件,不過沒有關係,可以通過兩種方法來實現,乙個是通過range物件的find() 方法來實現; 另外乙個比較麻煩,取得工作表worksheet的有效區域usedrange之後,遍歷該range物件中的所有行列。實際開發中,用第二 種方法時發現了乙個特別的現象,所以第二種方法也準備詳細記述一下。
1. 開啟excel文件:
1
2
3
4
5
6
7
8
9
10
object
filename=
""
;
object
missin**alue=type.missing;
string
strkeyword=
""
;
//指定要搜尋的文字,如果有多個,則宣告string
new
excel.workbook ew=ep.workbooks.open(filename.tostring(),missin**alue,
missin**alue,missin**alue,missin**alue,
missin**alue,missin**alue,missin**alue,
missin**alue,missin**alue,missin**alue,
missin**alue,missin**alue,missin**alue,
missin**alue);
2. 準備遍歷excel工作表
2.1方法1
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
excel.worksheet ews;
int
iewscnt=ew.worksheets.count;
int
i=0,j=0;
excel.range orange;
object
otext=strkeyword.trim().toupper();
for
(i=1;i<=iewscnt;i++)
}
這裡要說兩個值得注意的地方。乙個是遍歷工作表的索引,不是從0開始,而是從1開始;另外乙個是find方法的第六個引數 searchdirection,指定搜尋的方向,幫助文件中說這個引數是可選項,但是我用missin**alue如論如何編譯不能通過,不知什麼原 因,於是顯式指定它的預設值xlnext。
2.2方法2
第一種方法實現了,再看看第二種方法。這種方法除了要遍歷工作表,還要對工作表使用區域的行和列進行遍歷。其它一樣,只對遍歷說明,**如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool
blflag=
false
;
int
irowcnt=0,icolcnt=0,ibgnrow,ibgncol;
for
(m=1;m<=iewscnt;m++)
}
}
}
顯然這種方法比第一種繁瑣得多,不過這裡有乙個關於遍歷單元格的索引很特別的地方,當工作表中的使用區域usedrange為單行單列的時候,對usedrange中的單元格遍歷起始索引值為1,為多行多列的時候,起始索引值為0,不知這是excel程式設計者出於什麼樣的考慮?
2.3方法二補充案例
有效資料的行列數,可以通過下面的**獲取。
nusedrow = sheet.usedrange.rows.count;
nusedcol = sheet.usedrange.columns.count;
本文表示對參考文章1,文章2.2中原作者所說的那種奇怪的現象表示質疑,並不會出現那種情況。 2016-8-27
準備工作
現在需要用c#去開啟已經存在的乙個excel,並且找到最後一行,然後按行,繼續新增內容。
參考文章
1.c#程式設計實現excel文件中搜尋文字內容的方法及思路 ,2013-7
3.msdn, workbooks.open method
4. c#讀取excel檔案,並且追加內容到最後一行
沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的框架所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如別人所關心你的。理想的騰飛與實現,沒有別人的支援與幫助,是萬萬不能的。
C 程式設計實現Excel文件中搜尋文字
有了在word文件中程式設計實現搜尋文字的經驗,在excel中實現這個功能也並非難事。跟word物件模型不一樣的是,excel物件模型沒有提供find物件,不過沒有關係,可以通過兩種方法來實現,乙個是通過range物件的find 方法來實現,另外乙個比較麻煩,取得工作表worksheet的有效區域u...
使用C 實現對Excel檔案的寫入操作
先推薦一波大佬的部落格吧 然後再自己實踐一下。1.首先出現的問題是 include stdafx.h 標頭檔案沒有定義 這個問題雖然重要,但是可以放在最後解決。還有這一篇 使用標準輸入進行成績輸入,使用fstream類進行excel表的填寫。我們的c 作業,如下所示 需要注意的是 1.可以不建立.c...
php中替換特定塊的實現
今天在csdn上面有人提出了替換特定塊的需求,看了一下,覺得挺有意思,於是一路跟進,最後有一些答案,給記錄下來。提問如下 中華人民共和國中華人民共和國 n n n 或者 n中華人中華人民共和國 n 這樣的字串中a標籤的 n我怎麼用正則替換掉啊?實現方式1 line n中華人民共和國中華人民共和國 n...