c# - Formato condicional por expresión usando EPPlus
excel excel-2007 (2)
Se admite el formato condicional en la versión 3.1 beta de EPPlus.
Eche un vistazo al código fuente aquí: http://epplus.codeplex.com/discussions/348196/
Estoy tratando de formatear un rango usando la función de Formato condicional de EPPlus. Leo muchos documentos, pero no se menciona en ninguna parte la Expresión de formato condicional.
Estoy muy confundido No sé cómo usar esa función. Aquí están mis algunas preguntas:
- ¿Podemos usar un rango múltiple para poner en el parámetro ExcelAddress (como "H1: H17, L1: L17," AA1: AA17 ")
- La fórmula se pone en la propiedad de Fórmula de alguna manera es como Interop Excel o no? (como usamos "A1" para representar para la celda actual para formatear en excel de interoperabilidad)
- ¿Puede darme un pequeño segmento de código de demostración que use Expresión de formato condicional?
¡Gracias!
(Perdón por el mal inglés que escribí)
He encontrado una solución por mi cuenta. Por favor tome un código de ejemplo:
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;
En el ejemplo anterior,
-
_formatRangeAddress
es el rango que se aplicará para el formato condicional por la expresión. La primera celda en este rango se usará en la fórmula de condición. (B3). -
_statement
es la fórmula utilizada para calcular la condición, esta cadena no comienza con el signo igual (=
) (punto de diferencia de MS Excel), la celda que se utiliza para hacer la expresión es la primera celda en_formatRangeAddress
. (B3).
Espero que esto sea útil para otros que lo necesitan. -Han-