NPOI(Non-Profit Open Source Initiative)是一个开源的、非盈利性的项目,它提供了在.NET平台上处理Microsoft Office文档的功能。NPOI的主要目标是提供对Microsoft Office格式的读写能力,使开发人员能够在.NET应用程序中创建、读取和修改Word、Excel和PowerPoint等文档。
在使用NPOI设定Excel单元格背景色时,一般这样写:
private ICellStyle GetColorCellStyle(IWorkbook workbook) {
var cellStyle = GetCellStyle(workbook);
// 设置背景色
cellStyle.FillForegroundColor = IndexedColors.Aqua.Index;
cellStyle.FillPattern = FillPattern.SolidForeground;
return cellStyle;
}
但是受限于IndexedColors 提供的64种颜色可能无法达成我们的要求;
NPOI 为 XSSFCellStyle 提供了 SetFillForegroundColor(XSSFColor color) 的方法,让我们可以更灵活的设定单元格颜色。
代码如下:
/// <summary>
/// 取顏色
/// </summary>
/// <param name="htmlColor">#000000</param>
/// <returns></returns>
public static XSSFColor GetXSColor(string htmlColor)
{
//低版本可用
//return new XSSFColor(ColorTranslator.FromHtml(htmlColor));
var color = ColorTranslator.FromHtml(htmlColor);
return new XSSFColor(SixLabors.ImageSharp.Color.FromRgba(
color.R,
color.G,
color.B,
color.A
));
}
public static XSSFColor GetXSColor(System.Drawing.Color color) {
return new XSSFColor(SixLabors.ImageSharp.Color.FromRgba(
color.R,
color.G,
color.B,
color.A
));
}
private ICellStyle GetColorCellStyle(IWorkbook workbook)
{
XSSFCellStyle cellStyle = GetCellStyle(workbook) as XSSFCellStyle;
// 设置背景色
cellStyle.SetFillForegroundColor(NpoiHelper.GetXSColor("#99ccff"));
cellStyle.FillPattern = FillPattern.SolidForeground;
return cellStyle;
}
通过上述方案可以更灵活的设置单元格背景色