Previous topicNext topic
Help > 开发指南 > Excel >
Excel控件

Excel控件指的是可以在窗体中实现类似Excel UI界面的控件,比如SpreadsheetControl,完整的命名空间为:DevExpress.XtraSpreadsheet.SpreadsheetControl。这个控件只有Excel数据区域部分,如果想要带菜单、状态栏等所有功能的,则需要使用ExcelControl,完整命名空间为:sanMuSoft.CS.WinForm.Controls.ExcelControl。我们学习Excel控件其实只需要学习两点,一个是如何将控件添加到窗体中,另外一个就是如何访问IWorkbook对象,其他的我们只需要跟纯API式的Excel控制一致即可。

将ExcelControl添加到窗体中

Vb.Net
'获得SplitContainer控件的访问
Dim SplitContainer1 As System.Windows.Forms.SplitContainer=Me.SmForm.ControlDictionary()("SplitContainer1")
'先定义一个控件
Dim excel As New ExcelControl
'设置控件的Dock停靠属性
excel.Dock=DockStyle.Fill
'将Excel控件添加到SplitContainer控件的Panel2中去
SplitContainer1.Panel2.Controls.Add(excel)

C#
// 获得SplitContainer控件的访问
System.Windows.Forms.SplitContainer SplitContainer1 = this.SmForm.ControlDictionary()["SplitContainer1"];
// 先定义一个控件
ExcelControl excel = new ExcelControl();
// 设置控件的Dock停靠属性
excel.Dock = DockStyle.Fill;
// 将Excel控件添加到SplitContainer控件的Panel2中去
SplitContainer1.Panel2.Controls.Add(excel);

将SpreadsheetControl添加到窗体中

Vb.Net
'获得SplitContainer控件的访问
Dim SplitContainer1 As System.Windows.Forms.SplitContainer=Me.SmForm.ControlDictionary()("SplitContainer1")
'先定义一个控件
Dim excel As New DevExpress.XtraSpreadsheet.SpreadsheetControl
'设置控件的Dock停靠属性
excel.Dock=DockStyle.Fill
'将Excel控件添加到SplitContainer控件的Panel2中去
SplitContainer1.Panel2.Controls.Add(excel)

C#
// 获得SplitContainer控件的访问
System.Windows.Forms.SplitContainer SplitContainer1 = this.SmForm.ControlDictionary()["SplitContainer1"];
// 先定义一个控件
ExcelControl excel = new DevExpress.XtraSpreadsheet.SpreadsheetControl();
// 设置控件的Dock停靠属性
excel.Dock = DockStyle.Fill;
// 将Excel控件添加到SplitContainer控件的Panel2中去
SplitContainer1.Panel2.Controls.Add(excel);

如何访问Excel控件中的IWookbook对象

Excel控件与没有UI界面纯API操作Excel不太一样。纯API式操作Excel我们需要乃至Workbook类(全命名空间DevExpress.Spreadsheet.Workbook),实现了IWorkbook接口。正常情况下我们通过IWorkbook接口就可以访问到Excel中的各种对象,比如工作表、数据表、图表、数据透视表、名称、形状等等。Excel控件是通过SpreadsheetControl.Document属性来访问到IWorkbook接口的。

注意

SpreadsheetControl.Document属性返回的IWorkbook对象跟Workbook类不是同一个对象 IWorkbook中没有而Workbook中有的方法,比如打印、导出其他格式文档等可以直接到SpreadsheetControl控件上找是否有相应的方法。

Vb.Net
'获取Excel控件的引用
Dim spreadsheetControl As DevExpress.XtraSpreadsheet.SpreadsheetControl=Me.SmForm.ControlDictionary()("SpreadsheetControl1")
'获得IWorkbook对象的引用
Dim workbook As DevExpress.Spreadsheet.IWorkbook = spreadsheetControl.Document
'通过IWorkbook对象访问到Excel中的各个对象
Dim worksheet As DevExpress.Spreadsheet.Worksheet= workbook.Worksheets(0)

'获取带菜单的Excel控件的引用
Dim excelControl As ExcelControl=Me.SmForm.ControlDictionary()("ExcelControl1")
'获取纯数据区域控件的引用
Dim spreadsheetControl2 As DevExpress.XtraSpreadsheet.SpreadsheetControl=excelControl.SpreadsheetControl
'获得IWorkbook对象的引用
Dim workbook2 As DevExpress.Spreadsheet.IWorkbook = spreadsheetControl2.Document
'通过IWorkbook对象访问到Excel中的各个对象
Dim worksheet2 As DevExpress.Spreadsheet.Worksheet= workbook2.Worksheets(0)

C#
// 获取Excel控件的引用
DevExpress.XtraSpreadsheet.SpreadsheetControl spreadsheetControl = this.SmForm.ControlDictionary()["SpreadsheetControl1"] as DevExpress.XtraSpreadsheet.SpreadsheetControl;
// 获得IWorkbook对象的引用
DevExpress.Spreadsheet.IWorkbook workbook = spreadsheetControl.Document;
// 通过IWorkbook对象访问到Excel中的各个对象
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets[0];

// 获取带菜单的Excel控件的引用
ExcelControl excelControl = this.SmForm.ControlDictionary()["ExcelControl1"] as ExcelControl;
// 获取纯数据区域控件的引用
DevExpress.XtraSpreadsheet.SpreadsheetControl spreadsheetControl2 = excelControl.SpreadsheetControl;
// 获得IWorkbook对象的引用
DevExpress.Spreadsheet.IWorkbook workbook2 = spreadsheetControl2.Document;
// 通过IWorkbook对象访问到Excel中的各个对象
DevExpress.Spreadsheet.Worksheet worksheet2 = workbook2.Worksheets[0];