C 中實現對Excel特定文字的搜尋

2021-09-22 06:51:24 字數 3754 閱讀 7710

開啟excel的vba幫助,檢視excel的物件模型,很容易找到完成這個功能需要的幾個集合和物件:

跟word物件模型不一樣的是,excel物件模型沒有提供find物件,不過沒有關係,可以通過兩種方法來實現,乙個是通過range物件的find() 方法來實現; 另外乙個比較麻煩,取得工作表worksheet的有效區域usedrange之後,遍歷該range物件中的所有行列。實際開發中,用第二 種方法時發現了乙個特別的現象,所以第二種方法也準備詳細記述一下。   

1. 開啟excel文件:

1

2

3

4

5

6

7

8

9

10

objectfilename="";

objectmissin**alue=type.missing;

stringstrkeyword="";//指定要搜尋的文字,如果有多個,則宣告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;

intiewscnt=ew.worksheets.count;

inti=0,j=0;

excel.range orange;

objectotext=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

boolblflag=false;

intirowcnt=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...