“VSTO扩展Excel之一:工作薄相关处理”已经述及,Excel的VSTO外接程序经常需要获取到某个工作薄对象,并以此来获得其中的工作表对象,然后再对工作表中的数据进行处理,显然工作表是VSTO最常处理的对象,掌握工作表事件、方法和属性相关的编程尤为重要。
这里我们首先也要清楚几个概念,工作表对象是工作表 集合的成员。 Worksheets 集合包含工作簿中的所有 Worksheet 对象。工作表对象也是工作表 集合的一个成员。 Sheets 集合包含工作簿中所有的工作表(图表工作表和工作表),特别注意,工作表不一定是数据表格,还可以是图表工作表。
工作表有关的事件如下:
- Activate
- BeforeDelete
- BeforeDoubleClick
- BeforeRightClick
- Calculate
- Change
- Deactivate
- FollowHyperlink
- LensGalleryRenderComplete
- PivotTableAfterValueChange
- PivotTableBeforeAllocateChanges
- PivotTableBeforeCommitChanges
- PivotTableBeforeDiscardChanges
- PivotTableChangeSync
- PivotTableUpdate
- SelectionChange
- TableUpdate
工作表有关的方法如下:
- Activate
- Calculate
- ChartObjects
- CheckSpelling
- CircleInvalid
- ClearArrows
- ClearCircles
- Copy
- Delete
- Evaluate
- ExportAsFixedFormat
- Move
- OLEObjects
- Paste
- PasteSpecial
- PivotTables
- PivotTableWizard
- PrintOut
- PrintPreview
- Protect
- ResetAllPageBreaks
- SaveAs
- Scenarios
- Select
- SetBackgroundPicture
- ShowAllData
- ShowDataForm
- Unprotect
- XmlDataQuery
- XmlMapQuery
工作表有关的属性如下:
- Application
- AutoFilter
- AutoFilterMode
- Cells
- CircularReference
- CodeName
- Columns
- Comments
- CommentsThreaded
- ConsolidationFunction
- ConsolidationOptions
- ConsolidationSources
- Creator
- CustomProperties
- DisplayPageBreaks
- DisplayRightToLeft
- EnableAutoFilter
- EnableCalculation
- EnableFormatConditionsCalculation
- EnableOutlining
- EnablePivotTable
- EnableSelection
- FilterMode
- HPageBreaks
- Hyperlinks
- Index
- ListObjects
- MailEnvelope
- Name
- Names
- Next
- Outline
- PageSetup
- Parent
- Previous
- PrintedCommentPages
- ProtectContents
- ProtectDrawingObjects
- Protection
- ProtectionMode
- ProtectScenarios
- QueryTables
- Range
- Rows
- ScrollArea
- Shapes
- Sort
- StandardHeight
- StandardWidth
- Tab
- TransitionExpEval
- TransitionFormEntry
- Type
- UsedRange
- Visible
- VPageBreaks
与工作表有关的事件、方法和属性真是太多了,从另一方面说明工作表的重要性,笔者对其中常用或者相对更重要的事件、方法和属性文字进行了加粗。
加上下面这段代码后面(新增加一个工作表,并选中新建的工作表),工作表就可以被各种操作了:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
eApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
//开启VSTO之旅,添加工作薄
Excel.Worksheet sht = eApp.ActiveSheet;
eApp.Worksheets.Add();
//注意,Worksheets[0]是第一个工作表,Worksheets[1]是第二个工作表,以此类推
sht = eApp.Worksheets[1];
}