Epplus:如何将样式从Excel样式库应用于ExcelRange

时间:2016-08-09 20:24:28

标签: c# excel epplus

屏幕截图显示了Epplus导出到新Excel文件(文件类型* .xlsx)的数据集方案。

在这种情况下,我想将Excel样式库中的“坏”样式应用于单元格E1。我怎么能在Epplus中以编程方式执行此操作?

Screenshot of example scenario

我查看了我能够找到的教学文件,herehere。我还没有找到一个示例,说明如何将样式库中的Excel样式应用到Excel范围。

这是我到目前为止所拥有的。

private void FormatDataTable(ExcelWorksheet worksheet)
{            
    if(RowCount==0) 
    {
        // How do I apply the "Bad" style to this range?
        var range = worksheet.Cells["E1"];      
    }
}

3 个答案:

答案 0 :(得分:2)

据我所知,没办法。但总是存在方式

var cell = worksheet.Cells["E1"];
cell.Style.Font.Name = "Calibri";
cell.Style.Font.Size = 11;
cell.Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("#ffc7ce"));
cell.Style.Fill.PatternType = ExcelFillStyle.Solid;
cell.Font.Color.SetColor(ColorTranslator.FromHtml("#be0006"));

这应该成功。

答案 1 :(得分:0)

要仅修改背景颜色,请使用:

using System.Drawing;

并应用于范围

sheet.Cells["A1:BB1"].Style.Fill.BackgroundColor.SetColor(Color.Red);

答案 2 :(得分:0)

EPPlus支持命名样式。不幸的是,预定义的Excel样式尚不可用。但是,重新创建它们相当容易。

可以通过以下方式定义命名样式:

ExcelNamedStyleXml ns = workBook.Styles.CreateNamedStyle("Good");
ns.Style.Font.Name = "Calibri";
ns.Style.Font.Family = 2;
ns.Style.Font.Size = 11;
ns.Style.Font.Color.SetColor(0xFF, 0x00, 0x61, 0x00);
ns.Style.Fill.PatternType = ExcelFillStyle.Solid;
ns.Style.Fill.BackgroundColor.SetColor(0xFF, 0xC6, 0xEF, 0xCE);

要将其应用于某个范围,您可以使用

workSheet.Cells[2, 2].StyleName = "Good";

要获得与Excel中相同的样式,请创建一个新工作簿,并将您喜欢的样式应用于几个单元格。可以解压缩保存的.xlsx文件。其中包含一个xl/styles.xml文件,其中包含所有使用的样式。显而易见,如何发现重新创建样式所需的元素。

<cellStyles>节点具有所有样式。其中的每个<cellStyle>节点都有一个namexfId属性。 xfId指的是<cellXfs>节点中的一种样式,其中几个元素被组合以形成样式。例如,fontId属性引用<fonts>节点中的第 n 个字体。