工作簿是 ReoGrid 中的顶层容器。它包含多个工作表,并管理文件 I/O、设置和事件。

组件结构:

控件即工作簿
ReoGrid 控件实例本身就是一个工作簿。你可以直接使用它来访问工作簿级别的功能:
var workbook = reoGridControl1;
访问工作表
当前工作表
获取当前活动的工作表:
var sheet = reoGridControl.CurrentWorksheet;
切换活动工作表:
reoGridControl.CurrentWorksheet = reoGridControl.Worksheets[2];
注意:
CurrentWorksheet不能设置为null—— 控件必须始终有至少一个活动的工作表。
通过索引或名称访问
// By zero-based index
var sheet1 = reoGridControl.Worksheets[0];
// By name
var sheet2 = reoGridControl.Worksheets["Sheet2"];
查找工作表索引
int index = reoGridControl.GetWorksheetIndex("Sheet2");
// or
int index = reoGridControl.GetWorksheetIndex(mySheet);
通过名称查找工作表
var sheet = reoGridControl.GetWorksheetByName("Sheet2");
检查名称是否可用
bool available = reoGridControl.CheckWorksheetNameAvailable("NewSheet");
工作表数量
int count = reoGridControl.WorksheetCount;
// or
int count = reoGridControl.Worksheets.Count;
检查是否为空
bool empty = reoGridControl.IsEmpty;
工作表管理
创建工作表
// Create with auto-assigned name (Sheet1, Sheet2, etc.)
var sheet = reoGridControl.CreateWorksheet();
// Create with a specified name
var sheet = reoGridControl.CreateWorksheet("MySheet");
// Create with name and duplicate-check
var sheet = reoGridControl.CreateWorksheet("MySheet", checkNameExists: true);
// NewWorksheet is an alias for CreateWorksheet
var sheet = reoGridControl.NewWorksheet("MySheet");
注意: 与 Excel 相同,ReoGrid 不允许同一工作簿中存在两个同名的工作表。
添加和插入工作表
// Add at the end
reoGridControl.AddWorksheet(sheet);
// Insert at a specific position (zero-based index)
reoGridControl.InsertWorksheet(1, sheet);
// Via the Worksheets collection
reoGridControl.Worksheets.Add(sheet);
reoGridControl.Worksheets.Insert(1, sheet);
工作表通过电子表格底部的工作表标签控件进行切换:

删除工作表
// Remove by index
reoGridControl.RemoveWorksheet(0);
// Remove by instance
reoGridControl.RemoveWorksheet(sheet);
// Via the Worksheets collection
reoGridControl.Worksheets.Remove(sheet);
reoGridControl.Worksheets.RemoveAt(0);
复制工作表
// Copy the first worksheet and insert the copy at position 1
var copy = reoGridControl.CopyWorksheet(0, 1);
// Copy with a new name
var copy = reoGridControl.CopyWorksheet(0, 1, "CopiedSheet");
// Copy by worksheet instance
var copy = reoGridControl.CopyWorksheet(sheet, 2, "AnotherCopy");
移动工作表
// Move the worksheet at index 0 to index 3
reoGridControl.MoveWorksheet(0, 3);
// Move by worksheet instance
reoGridControl.MoveWorksheet(sheet, 2);
从工作表获取父工作簿
var workbook = sheet.Workbook;
工作表集合
Worksheets 属性返回一个支持完整 CRUD 操作的 WorksheetCollection:
var worksheets = reoGridControl.Worksheets;
// Iterate all worksheets
foreach (var sheet in worksheets)
{
Console.WriteLine(sheet.Name);
}
// Check if a worksheet exists
bool exists = worksheets.Contains(sheet);
// Get count
int count = worksheets.Count;
// Create directly from collection
var newSheet = worksheets.Create("NewSheet");
// Clear all worksheets
worksheets.Clear();
工作表名称和标签外观
更改工作表名称
sheet.Name = "Sales Data";
标签背景色
自定义工作表标签的背景色:
sheet.NameBackColor = new SolidColor(Color.LightBlue);
标签文字颜色
自定义工作表标签的文字颜色:
sheet.NameTextColor = new SolidColor(Color.DarkBlue);
只读模式
将整个工作簿设置为只读模式:
reoGridControl.Readonly = true;
工作簿设置
// Set a setting
reoGridControl.SetSettings(WorkbookSettings.View_ShowSheetTabControl, false);
// Check a setting
bool hasSheetTab = reoGridControl.HasSettings(WorkbookSettings.View_ShowSheetTabControl);
// Get all settings
var settings = reoGridControl.GetSettings();
可用的 WorkbookSettings
| 设置 | 说明 |
|---|---|
View_ShowSheetTabControl | 在底部显示工作表标签控件 |
View_ShowScrolls | 显示水平和垂直滚动条 |
View_ShowHorScroll | 显示水平滚动条 |
View_ShowVerScroll | 显示垂直滚动条 |
控件外观
使用 ControlAppearanceStyle 自定义网格控件的视觉外观:
var appearance = reoGridControl.ControlStyle;
// Change selection border width
appearance.SelectionBorderWidth = 2.0f;
// Change grid line width
appearance.GridLineWidth = 0.5f;
// Change individual colors
appearance[ControlAppearanceColors.GridBackground] = new SolidColor(Color.White);
appearance[ControlAppearanceColors.GridLine] = new SolidColor(Color.LightGray);
appearance[ControlAppearanceColors.SelectionBorder] = new SolidColor(Color.Blue);
appearance[ControlAppearanceColors.SelectionFill] = new SolidColor(60, 0, 0, 255);
// Column header colors
appearance[ControlAppearanceColors.ColHeadNormalStart] = new SolidColor(Color.WhiteSmoke);
appearance[ControlAppearanceColors.ColHeadNormalEnd] = new SolidColor(Color.LightGray);
appearance[ControlAppearanceColors.ColHeadText] = new SolidColor(Color.Black);
// Row header colors
appearance[ControlAppearanceColors.RowHeadNormal] = new SolidColor(Color.WhiteSmoke);
appearance[ControlAppearanceColors.RowHeadText] = new SolidColor(Color.Black);
// Sheet tab colors
appearance[ControlAppearanceColors.SheetTabBackground] = new SolidColor(Color.White);
appearance[ControlAppearanceColors.SheetTabText] = new SolidColor(Color.Black);
appearance[ControlAppearanceColors.SheetTabSelected] = new SolidColor(Color.Blue);
外观颜色键
| 颜色键 | 说明 |
|---|---|
GridBackground | 工作表背景 |
GridText | 默认文字颜色 |
GridLine | 网格线颜色 |
SelectionBorder | 选区边框颜色 |
SelectionFill | 选区填充颜色 |
ColHeadNormalStart/End | 列标题渐变色(正常状态) |
ColHeadHoverStart/End | 列标题渐变色(悬停状态) |
ColHeadSelectedStart/End | 列标题渐变色(选中状态) |
ColHeadFullSelectedStart/End | 列标题渐变色(完全选中) |
ColHeadText | 列标题文字颜色 |
RowHeadNormal | 行标题背景(正常状态) |
RowHeadHover | 行标题背景(悬停状态) |
RowHeadSelected | 行标题背景(选中状态) |
RowHeadFullSelected | 行标题背景(完全选中) |
RowHeadText | 行标题文字颜色 |
SheetTabBorder | 工作表标签边框颜色 |
SheetTabBackground | 工作表标签背景 |
SheetTabText | 工作表标签文字颜色 |
SheetTabSelected | 活动工作表标签颜色 |
OutlinePanelBorder | 大纲面板边框 |
OutlinePanelBackground | 大纲面板背景 |
OutlineButtonBorder | 大纲展开/折叠按钮边框 |
OutlineButtonText | 大纲按钮文字 |
LeadHeadNormal | 引导标题(左上角)正常颜色 |
LeadHeadHover | 引导标题悬停颜色 |
LeadHeadSelected | 引导标题选中颜色 |
更多详情请参阅控件外观。
文件 I/O(保存与加载)
保存
// Save to file (format auto-detected from extension)
reoGridControl.Save("workbook.xlsx");
// Save with explicit format
reoGridControl.Save("workbook.xlsx", FileFormat.Excel2007);
// Save with encoding
reoGridControl.Save("workbook.csv", FileFormat.CSV, Encoding.UTF8);
// Save to stream
reoGridControl.Save(stream, FileFormat.Excel2007);
加载
// Load from file
reoGridControl.Load("workbook.xlsx");
// Load with explicit format
reoGridControl.Load("workbook.xlsx", FileFormat.Excel2007);
// Load with encoding
reoGridControl.Load("workbook.csv", FileFormat.CSV, Encoding.UTF8);
// Load from stream
reoGridControl.Load(stream, FileFormat.Excel2007);
更多详情请参阅导入与导出。
重置工作簿
将工作簿重置为初始状态(清除所有工作表和内容):
reoGridControl.Reset();
异常处理
通知工作簿发生异常,以实现集中式错误处理:
reoGridControl.NotifyExceptionHappen(sheet, exception);
reoGridControl.NotifyExceptionHappen(sheet, exception, cellPosition);
事件
工作表管理事件
| 事件 | 事件参数 | 说明 |
|---|---|---|
WorksheetCreated | WorksheetCreatedEventArgs | 创建了新的工作表 |
WorksheetInserted | WorksheetInsertedEventArgs | 插入了工作表(提供 Index) |
WorksheetRemoved | WorksheetRemovedEventArgs | 删除了工作表(提供 Index) |
BeforeWorksheetNameChange | WorksheetNameChangingEventArgs | 工作表名称更改之前(提供 NewName) |
WorksheetNameChanged | WorksheetNameChangingEventArgs | 工作表名称更改之后 |
WorksheetNameBackColorChanged | WorksheetEventArgs | 标签背景色已更改 |
WorksheetNameTextColorChanged | WorksheetEventArgs | 标签文字颜色已更改 |
文件 I/O 事件
| 事件 | 事件参数 | 说明 |
|---|---|---|
WorkbookLoaded | EventArgs | 工作簿文件加载之后 |
WorkbookSaved | EventArgs | 工作簿文件保存之后 |
其他事件
| 事件 | 事件参数 | 说明 |
|---|---|---|
SettingsChanged | EventArgs | 工作簿设置更改之后 |
ExceptionHappened | ExceptionHappenEventArgs | 发生异常(提供 Exception、Worksheet、CellPosition) |
示例:监听事件
reoGridControl.WorksheetCreated += (s, e) =>
{
Console.WriteLine($"Created worksheet: {e.Worksheet.Name}");
};
reoGridControl.WorksheetInserted += (s, e) =>
{
Console.WriteLine($"Inserted worksheet '{e.Worksheet.Name}' at index {e.Index}");
};
reoGridControl.WorksheetRemoved += (s, e) =>
{
Console.WriteLine($"Removed worksheet at index {e.Index}");
};
reoGridControl.ExceptionHappened += (s, e) =>
{
Console.WriteLine($"Error in {e.Worksheet?.Name}: {e.Exception.Message}");
};
组件对象结构

工作表标签控件
Windows Forms 和 WPF 版本都提供了内置的工作表标签 UI 控件。了解更多关于工作表标签控件的信息。
内存工作簿
ReoGrid 提供了内存工作簿实例 —— 一个不带 GUI 的工作表集合。请参阅内存工作簿。