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