第06章-样式与外观定制
第六章:样式与外观定制
6.1 字体样式
6.1.1 基本字体设置
using System.Drawing;
using unvell.ReoGrid.Data;
public class FontStyling
{
private Worksheet sheet;
public FontStyling(Worksheet worksheet)
{
sheet = worksheet;
}
/// <summary>
/// 设置字体名称和大小
/// </summary>
public void SetFontBasics(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FontName | PlainStyleFlag.FontSize,
FontName = "微软雅黑",
FontSize = 12
});
}
/// <summary>
/// 设置字体颜色
/// </summary>
public void SetFontColor(string range, Color color)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FontColor,
FontColor = color
});
}
/// <summary>
/// 设置粗体
/// </summary>
public void SetBold(string range, bool bold = true)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FontBold,
Bold = bold
});
}
/// <summary>
/// 设置斜体
/// </summary>
public void SetItalic(string range, bool italic = true)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FontItalic,
Italic = italic
});
}
/// <summary>
/// 设置下划线
/// </summary>
public void SetUnderline(string range, bool underline = true)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FontUnderline,
Underline = underline
});
}
/// <summary>
/// 设置删除线
/// </summary>
public void SetStrikethrough(string range, bool strikethrough = true)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FontStrikethrough,
Strikethrough = strikethrough
});
}
}
6.1.2 组合字体样式
public class CombinedFontStyles
{
/// <summary>
/// 设置标题样式
/// </summary>
public void SetTitleStyle(Worksheet sheet, string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FontName |
PlainStyleFlag.FontSize |
PlainStyleFlag.FontColor |
PlainStyleFlag.FontBold,
FontName = "微软雅黑",
FontSize = 16,
FontColor = Color.DarkBlue,
Bold = true
});
}
/// <summary>
/// 设置强调文本样式
/// </summary>
public void SetEmphasisStyle(Worksheet sheet, string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FontColor |
PlainStyleFlag.FontItalic |
PlainStyleFlag.FontBold,
FontColor = Color.Red,
Italic = true,
Bold = true
});
}
}
6.2 单元格背景
6.2.1 背景颜色
public class BackgroundStyling
{
private Worksheet sheet;
/// <summary>
/// 设置单色背景
/// </summary>
public void SetBackgroundColor(string range, Color color)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor,
BackColor = color
});
}
/// <summary>
/// 常用背景色设置
/// </summary>
public void SetCommonBackgrounds()
{
// 浅黄色背景(突出显示)
sheet.SetRangeStyles("A1:A10", new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor,
BackColor = Color.LightYellow
});
// 浅蓝色背景(表头)
sheet.SetRangeStyles("A1:Z1", new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor,
BackColor = Color.LightBlue
});
// 浅灰色背景(只读区域)
sheet.SetRangeStyles("A1:A5", new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor,
BackColor = Color.LightGray
});
}
/// <summary>
/// 交替行颜色
/// </summary>
public void SetAlternateRowColors(int startRow, int endRow, int startCol, int endCol)
{
for (int row = startRow; row <= endRow; row++)
{
Color bgColor = row % 2 == 0
? Color.White
: Color.FromArgb(242, 242, 242);
sheet.SetRangeStyles(
new RangePosition(row, startCol, 1, endCol - startCol + 1),
new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor,
BackColor = bgColor
});
}
}
}
6.3 边框样式
6.3.1 基本边框设置
using unvell.ReoGrid.Graphics;
public class BorderStyling
{
private Worksheet sheet;
/// <summary>
/// 设置全边框
/// </summary>
public void SetAllBorders(string range, Color color, BorderLineStyle style)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.Border,
Border = new RangeBorderStyle
{
Left = new BorderStyle { Color = color, Style = style },
Top = new BorderStyle { Color = color, Style = style },
Right = new BorderStyle { Color = color, Style = style },
Bottom = new BorderStyle { Color = color, Style = style }
}
});
}
/// <summary>
/// 设置外边框
/// </summary>
public void SetOutsideBorder(string range, Color color, BorderLineStyle style)
{
sheet.SetRangeBorders(
new RangePosition(range),
BorderPositions.Outside,
new BorderStyle { Color = color, Style = style });
}
/// <summary>
/// 设置内边框
/// </summary>
public void SetInsideBorder(string range, Color color, BorderLineStyle style)
{
sheet.SetRangeBorders(
new RangePosition(range),
BorderPositions.Inside,
new BorderStyle { Color = color, Style = style });
}
/// <summary>
/// 设置特定边
/// </summary>
public void SetSpecificBorders(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.Border,
Border = new RangeBorderStyle
{
Top = new BorderStyle
{
Color = Color.Black,
Style = BorderLineStyle.Solid
},
Bottom = new BorderStyle
{
Color = Color.Black,
Style = BorderLineStyle.Solid
}
}
});
}
}
6.3.2 边框样式类型
public class BorderStyleTypes
{
public void DemonstrateBorderStyles(Worksheet sheet)
{
// 实线边框
sheet.SetRangeBorders("A1:A1", BorderPositions.All,
new BorderStyle { Color = Color.Black, Style = BorderLineStyle.Solid });
// 虚线边框
sheet.SetRangeBorders("B1:B1", BorderPositions.All,
new BorderStyle { Color = Color.Black, Style = BorderLineStyle.Dashed });
// 点线边框
sheet.SetRangeBorders("C1:C1", BorderPositions.All,
new BorderStyle { Color = Color.Black, Style = BorderLineStyle.Dotted });
// 粗线边框
sheet.SetRangeBorders("D1:D1", BorderPositions.All,
new BorderStyle { Color = Color.Black, Style = BorderLineStyle.BoldSolid });
// 双线边框
sheet.SetRangeBorders("E1:E1", BorderPositions.All,
new BorderStyle { Color = Color.Black, Style = BorderLineStyle.DoubleLine });
}
}
6.4 对齐方式
6.4.1 水平对齐
public class HorizontalAlignment
{
private Worksheet sheet;
/// <summary>
/// 设置左对齐
/// </summary>
public void SetLeftAlign(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.HorizontalAlign,
HAlign = ReoGridHorAlign.Left
});
}
/// <summary>
/// 设置居中对齐
/// </summary>
public void SetCenterAlign(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.HorizontalAlign,
HAlign = ReoGridHorAlign.Center
});
}
/// <summary>
/// 设置右对齐
/// </summary>
public void SetRightAlign(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.HorizontalAlign,
HAlign = ReoGridHorAlign.Right
});
}
/// <summary>
/// 设置分散对齐
/// </summary>
public void SetDistributedAlign(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.HorizontalAlign,
HAlign = ReoGridHorAlign.DistributedIndent
});
}
}
6.4.2 垂直对齐
public class VerticalAlignment
{
private Worksheet sheet;
/// <summary>
/// 设置顶部对齐
/// </summary>
public void SetTopAlign(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.VerticalAlign,
VAlign = ReoGridVerAlign.Top
});
}
/// <summary>
/// 设置中部对齐
/// </summary>
public void SetMiddleAlign(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.VerticalAlign,
VAlign = ReoGridVerAlign.Middle
});
}
/// <summary>
/// 设置底部对齐
/// </summary>
public void SetBottomAlign(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.VerticalAlign,
VAlign = ReoGridVerAlign.Bottom
});
}
}
6.4.3 文本换行
public class TextWrapping
{
private Worksheet sheet;
/// <summary>
/// 启用文本换行
/// </summary>
public void EnableTextWrap(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.TextWrap,
TextWrap = TextWrapMode.WordBreak
});
}
/// <summary>
/// 禁用文本换行
/// </summary>
public void DisableTextWrap(string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.TextWrap,
TextWrap = TextWrapMode.NoWrap
});
}
}
6.5 样式模板
6.5.1 预定义样式模板
public static class StyleTemplates
{
/// <summary>
/// 表头样式
/// </summary>
public static WorksheetRangeStyle HeaderStyle => new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor |
PlainStyleFlag.FontBold |
PlainStyleFlag.FontColor |
PlainStyleFlag.HorizontalAlign |
PlainStyleFlag.VerticalAlign,
BackColor = Color.FromArgb(68, 114, 196),
FontColor = Color.White,
Bold = true,
HAlign = ReoGridHorAlign.Center,
VAlign = ReoGridVerAlign.Middle
};
/// <summary>
/// 数据行样式
/// </summary>
public static WorksheetRangeStyle DataRowStyle => new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FontName | PlainStyleFlag.FontSize,
FontName = "微软雅黑",
FontSize = 10
};
/// <summary>
/// 强调样式
/// </summary>
public static WorksheetRangeStyle EmphasisStyle => new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor | PlainStyleFlag.FontBold,
BackColor = Color.Yellow,
Bold = true
};
/// <summary>
/// 错误样式
/// </summary>
public static WorksheetRangeStyle ErrorStyle => new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor | PlainStyleFlag.FontColor,
BackColor = Color.FromArgb(255, 199, 206),
FontColor = Color.FromArgb(156, 0, 6)
};
/// <summary>
/// 警告样式
/// </summary>
public static WorksheetRangeStyle WarningStyle => new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor | PlainStyleFlag.FontColor,
BackColor = Color.FromArgb(255, 235, 156),
FontColor = Color.FromArgb(156, 101, 0)
};
/// <summary>
/// 成功样式
/// </summary>
public static WorksheetRangeStyle SuccessStyle => new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor | PlainStyleFlag.FontColor,
BackColor = Color.FromArgb(198, 239, 206),
FontColor = Color.FromArgb(0, 97, 0)
};
}
6.5.2 使用样式模板
public class UseStyleTemplates
{
public void ApplyTemplates(Worksheet sheet)
{
// 应用表头样式
sheet.SetRangeStyles("A1:E1", StyleTemplates.HeaderStyle);
// 应用数据行样式
sheet.SetRangeStyles("A2:E100", StyleTemplates.DataRowStyle);
// 应用强调样式
sheet.SetRangeStyles("C10", StyleTemplates.EmphasisStyle);
// 应用错误样式
sheet.SetRangeStyles("D20", StyleTemplates.ErrorStyle);
}
}
6.6 主题与配色方案
6.6.1 专业配色方案
public class ColorSchemes
{
/// <summary>
/// 商务配色方案
/// </summary>
public static class Business
{
public static Color Primary = Color.FromArgb(0, 112, 192);
public static Color Secondary = Color.FromArgb(68, 114, 196);
public static Color Accent = Color.FromArgb(255, 192, 0);
public static Color Light = Color.FromArgb(217, 225, 242);
public static Color Dark = Color.FromArgb(31, 78, 120);
}
/// <summary>
/// 清新配色方案
/// </summary>
public static class Fresh
{
public static Color Primary = Color.FromArgb(112, 173, 71);
public static Color Secondary = Color.FromArgb(169, 208, 142);
public static Color Accent = Color.FromArgb(255, 230, 153);
public static Color Light = Color.FromArgb(226, 239, 218);
public static Color Dark = Color.FromArgb(84, 130, 53);
}
/// <summary>
/// 暖色配色方案
/// </summary>
public static class Warm
{
public static Color Primary = Color.FromArgb(237, 125, 49);
public static Color Secondary = Color.FromArgb(244, 176, 132);
public static Color Accent = Color.FromArgb(255, 217, 102);
public static Color Light = Color.FromArgb(252, 228, 214);
public static Color Dark = Color.FromArgb(192, 80, 77);
}
}
6.6.2 应用主题
public class ThemeApplication
{
public void ApplyBusinessTheme(Worksheet sheet)
{
// 表头
sheet.SetRangeStyles("A1:Z1", new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor | PlainStyleFlag.FontColor | PlainStyleFlag.FontBold,
BackColor = ColorSchemes.Business.Primary,
FontColor = Color.White,
Bold = true
});
// 次级表头
sheet.SetRangeStyles("A2:Z2", new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor | PlainStyleFlag.FontColor,
BackColor = ColorSchemes.Business.Secondary,
FontColor = Color.White
});
// 强调单元格
sheet.SetRangeStyles("E5", new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor,
BackColor = ColorSchemes.Business.Accent
});
}
}
6.7 样式工具类
6.7.1 样式辅助方法
public static class StyleHelpers
{
/// <summary>
/// 复制样式
/// </summary>
public static void CopyStyle(this Worksheet sheet, string sourceRange, string targetRange)
{
var sourceStyle = sheet.GetRangeStyles(new RangePosition(sourceRange));
sheet.SetRangeStyles(targetRange, sourceStyle);
}
/// <summary>
/// 清除样式
/// </summary>
public static void ClearStyle(this Worksheet sheet, string range)
{
sheet.SetRangeStyles(range, WorksheetRangeStyle.Empty);
}
/// <summary>
/// 快速设置表头样式
/// </summary>
public static void SetAsHeader(this Worksheet sheet, string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor |
PlainStyleFlag.FontBold |
PlainStyleFlag.HorizontalAlign,
BackColor = Color.FromArgb(79, 129, 189),
Bold = true,
HAlign = ReoGridHorAlign.Center
});
}
/// <summary>
/// 设置只读样式
/// </summary>
public static void SetAsReadOnly(this Worksheet sheet, string range)
{
sheet.SetRangeStyles(range, new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor | PlainStyleFlag.FontColor,
BackColor = Color.LightGray,
FontColor = Color.DarkGray
});
}
}
6.8 本章小结
本章全面介绍了ReoGrid的样式与外观定制功能,包括字体、背景、边框、对齐等各种视觉效果的设置方法。
📚 下一章预告
第七章将学习公式与计算引擎,了解如何使用内置函数和创建自定义函数。
继续学习第七章:公式与计算引擎!

浙公网安备 33010602011771号