從NET開發(fā)人員的角度理解Excel對(duì)象模型三資料15_第1頁
從NET開發(fā)人員的角度理解Excel對(duì)象模型三資料15_第2頁
從NET開發(fā)人員的角度理解Excel對(duì)象模型三資料15_第3頁
從NET開發(fā)人員的角度理解Excel對(duì)象模型三資料15_第4頁
從NET開發(fā)人員的角度理解Excel對(duì)象模型三資料15_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、從NET開發(fā)人員的角度理解 Excel對(duì)象模型 三從開發(fā)人員的角度理解 Excel對(duì)象模型(三)2019-05-05 10 : 24Application 事件除了 Application 類提供的所有其他方法之外,您還將發(fā)現(xiàn)有一大 組事件可用。雖然不可能以任何一種一致的方式演示所有事件,但是單 單根據(jù)名稱,就可以比較清楚地知道它們的用途。下面幾部分描述了這 些事件的一個(gè)子集,并討論了在您自己的應(yīng)用程序中最可能使用的事 件。提示傳遞給Office應(yīng)用程序中的事件處理程序的參數(shù)會(huì)讓人感到 與用在本機(jī)事件中的參數(shù)不同。通常,事件處理程序總是接收Object變量(該變量引用引發(fā)事件的對(duì)象)和第二個(gè)參

2、數(shù)(該參數(shù)從EventArgs基類 繼承而來,包含關(guān)于事件的額外信息)。沒有這樣定義良好的事件設(shè)計(jì)模式用于Office應(yīng)用程序,因此每個(gè)事件處理程序都接受任意數(shù)目的參數(shù) (由最初的開發(fā)人員定義)。表行為Application對(duì)象提供了各種與表(包括圖表和工作表)相關(guān)的事件。下面的列表包含關(guān)于許多這樣的事件的信息:當(dāng)任何一個(gè)表被激活時(shí),SheetActivate 都會(huì)發(fā)生。Excel將一個(gè) 包含對(duì)被激活的表的引用的Object變量傳遞給事件處理程序。提示正如Excel中傳遞一個(gè)引用表的 Object的任何情況一樣,在 可以使用這個(gè)引用之前,您需要將引用強(qiáng)制轉(zhuǎn)換成一個(gè)正確類型(Worksheet或

3、Chart ,視具體的情況而定)的變量。然而,如果您已經(jīng)禁 用了 Visual Basic 中的Option Strict 設(shè)置,您可以利用晚期綁定。在 您鍵入時(shí),您將仍然不能利用 IntelliSense ,這使得編寫代碼變得更加 困難。本文檔中所有在 Sheets集合內(nèi)使用項(xiàng)的示例都顯式地將結(jié)果強(qiáng)制 轉(zhuǎn)換成所需要的特定類型的表 (Worksheet或Chart)。在Excel提供默認(rèn)的雙擊處理之前,當(dāng)任何表被雙擊時(shí), SheetBeforeDoubleClick 都會(huì)發(fā)生。Excel將下列參數(shù)傳遞給事件處理 程序:一個(gè)包含對(duì)表的引用的Object變量、一個(gè)包含離雙擊位置最近的單元格的Ran

4、ge對(duì)象、一個(gè)允許您取消默認(rèn)事件處理的Boolean值(默認(rèn)為False) 0 (此事件沒有出現(xiàn)在圖表中。)提示所有在它們的名稱中包括單詞"Before"的事件都允許您取消默認(rèn)的事件處理。傳遞給您的事件處理程序的參數(shù)通常名為Cancle ,具有默認(rèn)值False 0如果將這個(gè)參數(shù)設(shè)置為 True, Excel將不會(huì)執(zhí)行事件的 默認(rèn)處理。在Excel提供默認(rèn)的右鍵單擊處理之前,當(dāng)任何表被右鍵單擊時(shí), SheetBeforeRightClick都會(huì)發(fā)生。Exce將下列參數(shù)傳遞給事件處理程序:一個(gè)包含對(duì)表的引用的Object變量、一個(gè)包含離右擊位置最近的單元格的Range對(duì)象、一個(gè)

5、允許您取消默認(rèn)事件處理的Boolean值(默認(rèn)為False) 0 (此事件沒有出現(xiàn)在圖表中。)當(dāng)任何表被重新計(jì)算時(shí),SheetCalculate 都會(huì)出現(xiàn)。Excel將一個(gè) 包含對(duì)重新計(jì)算的表的引用的Object傳遞給事件處理程序。當(dāng)任何工作表中的單元格發(fā)生變化(通過用戶或者通過運(yùn)行代碼)時(shí),SheetChange都會(huì)發(fā)生。Excel將一個(gè)Object變量(包含對(duì)表的引用) 和一個(gè)Range變量(引用改變的范圍)傳遞給事件處理程序。當(dāng)任何表單被停用時(shí)(即當(dāng)它不再有焦點(diǎn)時(shí)),SheetDeactivate者B 會(huì)發(fā)生。只有當(dāng)焦點(diǎn)轉(zhuǎn)移到同一工作簿內(nèi)的另一個(gè)表時(shí),這個(gè)事件處理 程序才會(huì)運(yùn)行。Exce

6、l將一個(gè)包含對(duì)已經(jīng)停用的表的引用的Object變量傳遞給事件處理程序。當(dāng)您單擊任何工作簿內(nèi)的任何超級(jí)鏈接時(shí),SheetFollowHyperlink都會(huì)發(fā)生。Excel將一個(gè)引用包含此鏈接的表的Object變量和一個(gè)包含對(duì)您所單擊的鏈接的引用的Hyperlink對(duì)象傳遞給事件處理程序。(示例項(xiàng)目使用了這個(gè)事件,從而在示例內(nèi)提供了導(dǎo)航。)當(dāng)工作表上的選擇改變時(shí), SheetSelectionChange 會(huì)發(fā)生(該事件 沒有出現(xiàn)在圖表中)。Excel將一個(gè)引用選擇發(fā)生改變的表的 Object變 量和一個(gè)引用新選擇的 Range變量傳遞給事件處理程序。(注意,在最初 的選擇發(fā)生改變之前,Excel

7、沒有傳遞關(guān)于最初的選擇的信息。)注這一部分中的每個(gè)事件也可用作Workbook類提供的事件。如果該事件是由Application 對(duì)象提供的,則它可以被 Excel內(nèi)當(dāng)前打開的 任何一個(gè)表引發(fā)。當(dāng)它是由Workbook對(duì)象提供的,則該事件只有在它影響特定工作簿中的一個(gè)表時(shí)才會(huì)發(fā)生。止匕外,您還將發(fā)現(xiàn) Worksheet類 提供的相同事件。在這種情況下,事件名不包含單詞"Sheet"(例如,您將會(huì)找到 FollowHyperlink 而不是 SheetFollowHyperlink ,等等),并且事件處理程序不傳遞對(duì)表的引用-這種信息隱含在接收事件的對(duì)象中。另外,事件及其使用

8、方法和參數(shù)與此處您所看到的事件相同。Window行為Application 對(duì)象(和相應(yīng)的 Workbook對(duì)象)提供了各種處理 Window對(duì)象的行為的事件。下面的列表描述了這些事件:當(dāng)任何窗口被激活時(shí), WindowActivate都會(huì)發(fā)生。Excel將下面兩 個(gè)參數(shù)傳遞給事件處理程序:一個(gè)是 Workbook對(duì)象,這個(gè)對(duì)象引用提供 窗口的工作簿;一個(gè)是引用被選擇的窗口的Window對(duì)象。與其他激活事件一樣,這個(gè)事件也是只有在Excel內(nèi)的焦點(diǎn)移動(dòng)時(shí)才激發(fā)。切換到另一個(gè)應(yīng)用程序,然后再回到 Excel時(shí),不會(huì)引發(fā)此事件。當(dāng)任何窗口被停用時(shí), WindowDeactivate都會(huì)發(fā)生。有關(guān)更

9、多信 息,請(qǐng)參閱WindowActivate事件描述。當(dāng)任何工作簿窗口重新調(diào)整大小時(shí),WindowResize都會(huì)發(fā)生。Excel將一個(gè)引用提供窗口的工作簿的Workbook對(duì)象和一個(gè)引用大小重新調(diào)整的窗口的 Window對(duì)象傳遞給事件處理程序。注由Workbook類提供的事件中,事件處理程序不會(huì)接收對(duì) Workbook的引用-這種信息隱含在引發(fā)此事件的對(duì)象中。Workbook Application 對(duì)象提供了各種當(dāng)您與任何Workbook對(duì)象交互時(shí)都會(huì)發(fā)生的事件。這些事件過程中的每一個(gè)都接收Workbook變量,該變量指示參與事件的特定工作簿。下面的列表描述了可用事件的 一個(gè)子集:當(dāng)創(chuàng)建一

10、個(gè)新的工作簿時(shí),NewWorkboo/發(fā)生。Excel將一個(gè)引用新的工作簿的 Workbook變量傳遞給事件處理程序。(此事件只由 Application類提供。)當(dāng)任何工作簿被激活時(shí),WorkbookActivate 都會(huì)發(fā)生。Excel將一個(gè)引用被激活的工作簿的Workbook變量傳遞給事件處理程序。(與其他的"激活”事件一樣,只有在您從一個(gè)工作簿切換到另一個(gè)工作簿時(shí)這個(gè) 事件才發(fā)生。)當(dāng)一個(gè)打開的工作簿剛好在默認(rèn)事件處理之前關(guān)閉時(shí), WorkbookBeforeClose會(huì)發(fā)生。Excel將一個(gè)引用將要關(guān)閉的工作簿的Workbook變量以及一個(gè)允許事件處理程序取消默認(rèn)事件處理(

11、即保持工作簿打開)的Boolean值(默認(rèn)為False)傳遞給事件處理程序。警告如果您草率地將Cancel參數(shù)設(shè)置為True,而不考慮任何條 件,則所有的工作簿將永遠(yuǎn)不會(huì)被關(guān)閉。當(dāng)工作簿內(nèi)的打印剛好在默認(rèn)事件處理之前開始時(shí), WorkbookBeforePrint 會(huì)發(fā)生。Excel將一個(gè)引用包含打印內(nèi)容的工作簿 的Workbook變量以及一個(gè)允許事件處理程序取消默認(rèn)事件處理(即跳過請(qǐng)求的打?。┑腂oolean值(默認(rèn)為False)傳遞給事件處理程序。當(dāng)剛好在默認(rèn)事件處理之前保存工作簿時(shí),WorkbookBeforeSave會(huì)發(fā)生。Excel將一個(gè)引用保存的工作簿的 Workbook變量以及一

12、個(gè)允許事 件處理程序取消默認(rèn)事件處理(即取消保存)的Boolean值(默認(rèn)為False) 傳遞給事件處理程序。當(dāng)任何工作簿被停用時(shí),WorkbookDeactivate 都會(huì)發(fā)生。Excel將一個(gè)引用已經(jīng)停用的工作簿的Workbook變量傳遞給事件處理程序。(與其他的"激活”事件一樣,這個(gè)事件只有在您從一個(gè)工作簿切換到另一個(gè) 工作簿時(shí)才會(huì)發(fā)生。)當(dāng)將新的表添加到工作簿時(shí),WorkbookNewSheet會(huì)發(fā)生。Excel將一個(gè)引用工作簿的 Workbook變量和一個(gè)引用新表的 Object變量傳遞給 事件處理程序。當(dāng)一個(gè)工作簿打開時(shí), WorkbookOpen會(huì)發(fā)生。Excel將一個(gè)

13、引用新 打開的工作簿的 Workbook變量傳遞給事件處理程序。注Workbook類提供了自己的一組事件,與您在此處看到的事件非 常相似。所有以"Workbook"開頭的事件在沒有該委托("Activate" 而不是 "WorkbookActivate",等等)的情況下出現(xiàn)在 Workbook類的事件列表 中。Workbook類事件處理程序不接收 Workbook變量作為參數(shù);該信息 隱含在引發(fā)這個(gè)事件的對(duì)象中。此外,Workbook類還提供了其他Application對(duì)象事件的鏡像,但是只為單個(gè)工作簿捕獲它們,這與為所有的工作簿捕獲

14、這些事件形成了對(duì)比。本文檔的剩余部分將不討論事 件,因?yàn)槟F(xiàn)在已經(jīng)了解了一些您最有可能會(huì)使用的事件。Workbook 類正如您可能想象到的那樣,Workbook類代表了 Excel應(yīng)用程序內(nèi)的一個(gè)單一的工作簿。在這一部分,您將會(huì)了解這個(gè)類的一些成員,包括 那些最常使用的屬性和方法。提示許多Application 類的成員也作為Workbook類的成員加以介 紹。在這種情況下,其屬性適用于特定的工作簿,而不適用于活動(dòng)工作 簿。這一部分所要討論的成員遠(yuǎn)比上一部分中討論的少,主要因?yàn)槟鷮?duì) 許多提到的成員已經(jīng)有所了解。Workbook類的屬性Workbook類提供了大量的屬性(大名90個(gè)),并且有許多

15、屬性處理 多數(shù)開發(fā)人員從不會(huì)考慮到的特殊情況;例如,AutoUpdateFrequency屬性返回共享工作簿的自動(dòng)更新的分鐘數(shù);如果工作簿使用1904日期系統(tǒng)(一種日期順序方案,它將 1904年1月2日作為對(duì)應(yīng)于值1的日期, 通常使用于 Macintosh計(jì)算機(jī)),Date1904屬性會(huì)返回True值; PasswordEncryptionAlgorithm屬性可以讓您設(shè)置用于加密密碼的確切算法,等等。這一部分只是介紹您最可能用到的Workbook對(duì)象屬性,而不是試圖全面介紹其眾多屬性。通常的規(guī)則是:如果您需要工作簿的某一行 為,而其他人可能已經(jīng)請(qǐng)求該行為,實(shí)際上最可能的情況是一個(gè)屬性允 許該

16、行為,而通常由一個(gè)方法提供該行為。在您向一個(gè)工作簿中添加自 己的代碼之前要仔細(xì)檢查文檔。以下列表描述了 一些最常使用的Workbook屬性:Name FullName、Path(字符串,只讀):這些屬性分別返回不同版 本的工作簿名稱。FullName返回完整路徑名稱,包括工作簿文件名。 Name只是返回名稱部分,而 Path則只返回路徑部分。單擊示例工作簿 中的Name Information 鏈接來運(yùn)行以下代碼,并返回信息,如圖 5所 示:'Visual BasicThisApplication.Range("WorkbookName").Value=_ This

17、Workbook.Name ThisApplication.Range("WorkbookPath").Value=_ ThisWorkbook.Path ThisApplication.Range("WorkbookFullName").Value=_ ThisWorkbook.FullName/C#ThisApplication.get_Range("WorkbookName",Type.Missing).Value2=ThisWorkbook.Name ;ThisApplication.get_Range("Workb

18、ookPath",Type.Missing).Value2=ThisWorkbook.Path ;ThisApplication.get_Range("WorkbookFullName",Type.Missing).Value2=ThisWorkbook.FullName ;圖5.使用Workbook屬性檢索名稱的有關(guān)信息。Password(字符串):獲取或者設(shè)置和工作簿相關(guān)的密碼。如果您指 定了一個(gè)非空的密碼,工作簿的HasPassword屬性也會(huì)返回True。您可以檢索Password屬性,但是它的值總是"*"。單擊示例工作簿中的SetPa

19、ssword鏈接來運(yùn)行以下代碼,它可以根據(jù)您是提供文本還是只提供空 字符串來設(shè)置或清除工作簿密碼。這個(gè)示例使用示例項(xiàng)目中名為 Password的窗體,它提供一個(gè)文本框和一個(gè)Password屬性:'Visual Basic Private Sub SetPassword()Dim frm As New Password If frm.ShowDialog=DialogResult.OK Then ThisWorkbook.Password=frm.Password End If frm.Dispose()End Sub/C#private void SetPassword()Passwo

20、rd frm=new Password();if(frm.ShowDialog()=DialogResult.OK)ThisWorkbook.Password=frm.Value ;frm.Dispose();PrecisionAsDisplayed( 布爾值):如果為 True,貝U Excel 使用以十 進(jìn)制顯示的數(shù)字進(jìn)行計(jì)算。如果為False(默認(rèn)值),則Excel使用所有可用的十進(jìn)制數(shù)進(jìn)行計(jì)算,甚至包括那些根本沒有顯示的部分。圖 6顯 示此屬性設(shè)置成True的示例工作簿。第 C列中的每個(gè)值都是第 B列中值 的副本,但是第 C列中的數(shù)字格式已經(jīng)設(shè)置成了只顯示兩個(gè)十進(jìn)制位。 要注意到,如果

21、將 PrecisionAsDisplayed 屬性設(shè)置成True,求和就會(huì) 不一樣,因?yàn)榻?jīng)過四舍五入后實(shí)際值會(huì)不同。如果您單擊PrecisionAsDisplayed=False 鏈接,求和又一樣了。單擊會(huì)調(diào)用以下過 程,傳遞True或False值(取決于您所單擊的鏈接):'Visual Basic Private Sub TestPrecisionAsDisplayed(_ ByVal IsPrecisionAsDisplayedOn As Boolean)ThisWorkbook.PrecisionAsDisplayed=IsPrecisionAsDisplayedOn End S

22、ub/C#private void TestPrecisionAsDisplayed(bool IsPrecisionAsDisplayedOn)ThisWorkbook.PrecisionAsDisplayed=IsPrecisionAsDisplayedOn ;圖6.將PrecisionAsDisplayed屬性設(shè)置成 True, Excel只使用顯示的十進(jìn)制數(shù)進(jìn)行計(jì)算。ReadOnly(布爾值,只讀 上如果工作簿以只讀的方式打開,則此屬 性返回True值。此時(shí)如果您無法將數(shù)據(jù)保存到工作簿,那么您可以在應(yīng) 用程序中采取其他不同操作。Saved(布爾值):用來獲取或設(shè)置工作簿的保存狀態(tài)。如果

23、用戶已 經(jīng)對(duì)工作簿的內(nèi)容或結(jié)構(gòu)進(jìn)行了修改,則 Saved屬性就為True。如果試 圖關(guān)閉工作簿或者退出Excel ,將會(huì)出現(xiàn)一個(gè)警報(bào)提示您保存工作簿(除非您已經(jīng)將 Application.DisplayAlerts屬性設(shè)置成 False)。如果您在代碼中將Saved屬性值設(shè)置成False , Excel就會(huì)認(rèn)為您的工作簿已經(jīng)保 存,并且不會(huì)再次提醒您保存。使用Document屬性正如其他的Office應(yīng)用程序一樣,Excel允許您在保存工作簿的同 時(shí)保存文檔屬性。Excel提供了許多內(nèi)置屬性,并且您也可以添加自己 的屬性。選擇"文件|屬性”來顯示如圖7所示的對(duì)話框,并且您也可以選 擇

24、“自定義”選項(xiàng)卡來創(chuàng)建和修改自定義屬性。圖7.使用此對(duì)話框設(shè)置文檔屬性。通過 Workbook類的BuiltInDocumentProperties屬性來使用內(nèi)置屬性,并通過 CustomDocumentProperties 屬性來使用自定義屬性。這些屬性都返回一個(gè) Documentproperties 對(duì)象,它是 DocumentProperty 對(duì) 象的一個(gè)集合。通過集合內(nèi)的名稱或者索引可以使用集合的Item屬性來檢索特定的屬性。在 Excel文檔中有全部的屬性名列表,但是有一個(gè)檢 索列表的簡(jiǎn)單方法:當(dāng)您單擊示例工作簿中的Document Properties 鏈接時(shí)會(huì)運(yùn)行下面的過程(參見

25、圖8)0該過程調(diào)用 DumpPropertyCollection方法列出所有內(nèi)置屬性和它們的當(dāng)前值,然后對(duì)自定義屬性也重復(fù)進(jìn)行這一過程。止匕外,該過程還單獨(dú)修改RevisionNumber屬性,并且創(chuàng)建一個(gè)新的自定義屬性:'Visual Basic Private Sub DisplayDocumentProperties()Dim prp As Office.DocumentProperty Dim prps As Office.DocumentProperties Dim rng As Excel.Range=_ ThisApplication.Range("Docume

26、ntProperties")Dim iAs Integer Try ThisApplication.ScreenUpdating=False Try prps=DirectCast(_ ThisWorkbook.BuiltinDocumentProperties,_ Office.DocumentProperties)'Set the Revision Number property :prp=prps.Item("Revision Number")prp.Value=CType(prp.Value,Integer)+1'Dump contents

27、 of the collectionDumpPropertyCollection(prps,rng,i)Catch ex As Exception MessageBox.Show(ex.Message)End Try'Work with custom properties :Try prps=DirectCast(_ ThisWorkbook.CustomDocumentProperties,_ Office.DocumentProperties)DumpPropertyCollectio n(prps,rng,i)Catch ex As Exception MessageBox.Sh

28、ow(ex.Message)End Try'Add acustom property :Try'Delete the property,if it exists.prp=prps.Item("Project Name")prp.Delete()Catch'Do nothing if you get an exception.End Try Try'Add anew property.prp=prps.Add("Project Name",False,_ Office.MsoDocProperties.msoProperty

29、TypeString,_"White Papers")Catch ex As Exception MessageBox.Show(ex.Message)End Try Finally ThisApplication.ScreenUpdating=True End Try End Sub Private Sub DumpPropertyCollection(_ ByVal prps As Office.DocumentProperties,_ ByVal rng As Excel.Range,ByRef iAs Integer)Dim prp As Office.Docume

30、ntProperty For Each prp In prps rng.Offset(i,0).Value=prp.Name Try If Not prp.Value Is Nothing Then rng.Offset(i,1).Value=_ prp.Value.ToString End If Catch'Do nothing at all.End Try i+=1 Next End Sub/C#private void DisplayDocumentProperties()Office.DocumentProperty prp=null ;Office.DocumentPrope

31、rties prps=(Office.DocumentProperties)ThisWorkbook.BuiltinDocumentProperties ;Excel.Range rng=ThisApplication.get_Range("DocumentProperties",Type.Missing) ;int i=0try ThisApplication.ScreenUpdating=false ; try/Set the Revision Number property prp=prps"Revision Number" ; prp.Value

32、=Convert.ToInt32(prp.Value)+1 ; /Dump contents of the collection i=DumpPropertyCollection(prps,rng,i) ; catch(Exception ex)MessageBox.Show(ex.Message,ThisApplication.Name) /Work with custom properties try prps=(Office.DocumentProperties) ThisWorkbook.CustomDocumentProperties ; DumpPropertyCollection

33、(prps,rng,i) catch(Exception ex)MessageBox.Show(ex.Message,ThisApplication.Name) /Add acustom property try /Delete the property,if it exists. prp=prps"Project Name" ; prp.Delete() ; catch/Do nothing if you get an exception. try/Add anew property.prp=prps.Add("Project Name",false,

34、Office.MsoDocProperties.msoPropertyTypeString,"White Papers",Type.Missing) ;catch(Exception ex)MessageBox.Show(ex.Message,ThisApplication.Name) ;finally ThisApplication.ScreenUpdating=true;private int DumpPropertyCollection(Office.DocumentProperties prps,Excel.Range rng,int i)foreach(Offic

35、e.DocumentProperty prp in prps)rng.get_Offset(i,0).Value2=prp.Name ;try if(prp.Value ! =null)rng.get_Offset(i,1).Value2=prp.Value.ToString() ;catch/Do nothing at all.i+=1return i提示前面的代碼示例DisplayDocumentProperties 使用了Microsoft.Office.Core程序集中的幾個(gè)枚舉和類型。示例代碼包含一個(gè)Imports/using 語句,它將文本"Office"設(shè)置成

36、這個(gè)命名空間的縮 寫,就像設(shè)置"Excel"縮寫一樣。項(xiàng)目模板會(huì)自動(dòng)設(shè)置 "Excel"縮寫。而 您需要自己添加"Office"語句。圖8.內(nèi)置的文檔屬性注盡管在這里您使用的是Excel及其對(duì)象,但是實(shí)際上是Office提供了可用的內(nèi)置文檔屬性列表,并且 Excel沒必要實(shí)現(xiàn)所有的屬性-如 果試圖訪問一個(gè)未定義屬性的Value屬性,就會(huì)觸發(fā)一個(gè)異常。示例過程包含應(yīng)付這種情況(如果會(huì)出現(xiàn)的話)的簡(jiǎn)單異常處理。使用樣式和Word文檔很相似,Excel工作簿允許您將指定的樣式應(yīng)用于工作 簿內(nèi)的區(qū)域,并且 Excel提供了許多預(yù)定義的(盡管并

37、不非常引人注目) 樣式。使用"格式|樣式"菜單項(xiàng),會(huì)顯示一個(gè)對(duì)話框,它允許您交互式地 修改樣式,如圖9所示。圖9.利用此對(duì)話框交互式地修改樣式。單擊"樣式"對(duì)話框中的Modify會(huì)顯示"單元格格式"對(duì)話框,如圖 10所示。圖10.使用"單元格格式”對(duì)話框修改樣式。"單元格格式"對(duì)話框顯示了您在格式化單元格時(shí)可以使用的所有選 項(xiàng),該對(duì)話框中可用的所有選項(xiàng)同樣可以在代碼中使用。您可以使用 Workbook對(duì)象的Styles屬性來與工作簿交互,并對(duì)工作簿內(nèi)的范圍應(yīng) 用樣式。通過使用 Workbook對(duì)象的Sty

38、les屬性,您可以創(chuàng)建、刪除和修改 樣式。單擊示例工作簿中的Apply Style來運(yùn)行以下過程,它創(chuàng)建了一個(gè)新的樣式(如果您已經(jīng)運(yùn)行了這段代碼,則使用已有的樣式),設(shè)置該樣式的各個(gè)方面,并將其應(yīng)用到一個(gè)區(qū)域:'Visual Basic Private Sub ApplyStyle()Const STYLE_NAME As String="PropertyBorder"Dim rng As Excel.Range'Get the range containing all the document properties.rng=GetDocPropRange(

39、)Dim sty As Excel.Style Try sty=ThisWorkbook.Styles(STYLE_NAME)Catch sty=ThisWorkbook.Styles.Add(STYLE_NAME)End Try sty.Font.Name="Verdana"sty.Font.Size=12sty.Font.Color=ColorTranslator.ToOle(Color.Blue)sty.Interior.Color=ColorTranslator.ToOle(Color.LightGray)sty.Interior.Pattern=XlPattern

40、.xlPatternSolid rng.Style=STYLE_NAME rng.Columns.AutoFit()End Sub/C#private void ApplyStyle()const String STYLE_NAME="PropertyBorder" ;/Get the range containing all the document properties.Excel.Range rng=GetDocPropRange();Excel.Style sty ;try sty=ThisWorkbook.StylesSTYLE_NAME;catchsty=ThisWorkbook.Styles.Add(STYLE_NAME,Type.Missing) ;sty.Font.Name="Verdana" ;sty.Font.Size=12 ;sty.Font.Color=ColorTranslator.ToOle(Color.Blue);sty.Interior.Color=ColorTranslator.ToOle(Color.LightGray);sty.Interior.Pattern=Excel.XlPattern.xlPatternSolid;rng.Style=STYLE_NAME;rng.Columns.Auto

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論