使用EPPlus按expression式进行条件格式化

我试图通过使用EPPlus的条件格式化function来格式化一些范围。 我读了很多文档,但是没有提到关于条件格式expression式的内容。

我很困惑。 不知道如何使用该function。 这是我的一些问题:

  1. 我们可以使用多个范围放入参数ExcelAddress(如“H1:H17,L1:L17,”AA1:AA17“)
  2. 公式是放在公式属性是不是像互操作Excel或不? (就像我们使用“A1”来表示当前单元格在interop excel中格式化一样)
  3. 你可以给我一个使用条件格式expression式的小演示代码段。

谢谢!

(对不起,我写了糟糕的英语)

我自己find了解决办法。 请举一个例子代码:

ExcelAddress _formatRangeAddress = new ExcelAddress("B3:B10,D3:D10,F3:F10,H3:H10:J3:J10"); // fill WHITE color if previous cell or current cell is BLANK: // B3 is the current cell because the range _formatRangeAddress starts from B3. // OFFSET(B3,0,-1) returns the previous cell's value. It's excel function. string _statement = "IF(OR(ISBLANK(OFFSET(B3,0,-1)),ISBLANK(B3)),1,0)"; var _cond4 = sheet.ConditionalFormatting.AddExpression(_formatRangeAddress); _cond4.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; _cond4.Style.Fill.BackgroundColor.Color = Color.White; _cond4.Formula = _statement; // fill GREEN color if value of the current cell is greater than // or equals to value of the previous cell _statement = "IF(OFFSET(B3,0,-1)-B3<=0,1,0)"; var _cond1 = sheet.ConditionalFormatting.AddExpression(_formatRangeAddress); _cond1.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; _cond1.Style.Fill.BackgroundColor.Color = Color.Green; _cond1.Formula = _statement; // fill RED color if value of the current cell is less than // value of the previous cell _statement = "IF(OFFSET(B3,0,-1)-B3>0,1,0)"; var _cond3 = sheet.ConditionalFormatting.AddExpression(_formatRangeAddress); _cond3.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; _cond3.Style.Fill.BackgroundColor.Color = Color.Red; _cond3.Formula = _statement; 

在上面的例子中,

  • _formatRangeAddress是由expression式应用于条件格式的范围。 这个范围中的第一个单元格将被用在条件公式中。 (B3)。
  • _statement是用于计算条件的公式,该string以等号( = )(与MS Excel的差异点)开始,用于expression的单元格是_formatRangeAddress的第一个单元格。 (B3)。

希望这有助于其他需要的人。 -Han-

在EPPlus的3.1testing版中支持条件格式。

看看这里的源代码: http : //epplus.codeplex.com/discussions/348196/