Calcular Fórmulas
Agregar fórmulas y calcular resultados
Aspose.Cells tiene un motor de cálculo de fórmulas incorporado. No solo puede volver a calcular fórmulas importadas desde plantillas de diseño, sino que también admite calcular los resultados de fórmulas agregadas en tiempo de ejecución.
Aspose.Cells admite la mayoría de las fórmulas o funciones que forman parte de Microsoft Excel(Leer una lista de las funciones compatibles con el motor de cálculo). Esas funciones se pueden utilizar a través de las APIs o las hojas de cálculo de diseñador. Aspose.Cells admite un amplio conjunto de fórmulas matemáticas, de cadena, booleanas, de fecha/hora, estadísticas, de base de datos, de búsqueda y de referencia.
Utilice la propiedad Formula o los métodos SetFormula(…) de la clase Cell para agregar una fórmula a una celda. Al aplicar una fórmula, siempre comience la cadena con un signo igual (=) como lo hace al crear una fórmula en Microsoft Excel y use una coma (,) para delimitar los parámetros de función.
Para calcular los resultados de las fórmulas, el usuario puede llamar al método CalculateFormula de la clase Workbook que procesa todas las fórmulas incrustadas en un archivo de Excel. O, el usuario puede llamar al método CalculateFormula de la clase Worsheet que procesa todas las fórmulas incrustadas en una hoja. O, el usuario también puede llamar al método Calculate de la clase Cell que procesa la fórmula de una celda:
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook(); | |
// Adding a new worksheet to the Excel object | |
int sheetIndex = workbook.Worksheets.Add(); | |
// Obtaining the reference of the newly added worksheet by passing its sheet index | |
Worksheet worksheet = workbook.Worksheets[sheetIndex]; | |
// Adding a value to "A1" cell | |
worksheet.Cells["A1"].PutValue(1); | |
// Adding a value to "A2" cell | |
worksheet.Cells["A2"].PutValue(2); | |
// Adding a value to "A3" cell | |
worksheet.Cells["A3"].PutValue(3); | |
// Adding a SUM formula to "A4" cell | |
worksheet.Cells["A4"].Formula = "=SUM(A1:A3)"; | |
// Calculating the results of formulas | |
workbook.CalculateFormula(); | |
// Get the calculated value of the cell | |
string value = worksheet.Cells["A4"].Value.ToString(); | |
// Saving the Excel file | |
workbook.Save(dataDir + "output.xls"); |
Importante saber para las Fórmulas
Cálculo directo de fórmulas
Aspose.Cells tiene un motor de cálculo de fórmulas incorporado. Además de calcular las fórmulas importadas de un archivo de diseñador, Aspose.Cells puede calcular directamente los resultados de las fórmulas.
A veces, es necesario calcular directamente los resultados de las fórmulas sin agregarlas a una hoja de cálculo. Los valores de las celdas utilizados en la fórmula ya existen en una hoja de cálculo y todo lo que necesita es encontrar el resultado de esos valores en función de alguna fórmula de Microsoft Excel sin agregar la fórmula en una hoja de cálculo.
Puede utilizar las APIs del motor de cálculo de fórmulas de Aspose.Cells para Worksheet hasta calculate los resultados de dichas fórmulas sin agregarlas a la hoja de cálculo:
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
// Create a workbook | |
Workbook workbook = new Workbook(); | |
// Access first worksheet | |
Worksheet worksheet = workbook.Worksheets[0]; | |
// Put 20 in cell A1 | |
Cell cellA1 = worksheet.Cells["A1"]; | |
cellA1.PutValue(20); | |
// Put 30 in cell A2 | |
Cell cellA2 = worksheet.Cells["A2"]; | |
cellA2.PutValue(30); | |
// Calculate the Sum of A1 and A2 | |
var results = worksheet.CalculateFormula("=Sum(A1:A2)"); | |
// Print the output | |
System.Console.WriteLine("Value of A1: " + cellA1.StringValue); | |
System.Console.WriteLine("Value of A2: " + cellA2.StringValue); | |
System.Console.WriteLine("Result of Sum(A1:A2): " + results.ToString()); |
El código anterior produce la siguiente salida:
Value of A1: 20
Value of A2: 30
Result of Sum(A1:A2): 50.0
Cómo Calcular Fórmulas repetidamente
Cuando hay muchas fórmulas en el libro de trabajo y el usuario necesita calcularlas repetidamente con modificando solo una pequeña parte de ellas, puede ser útil para el rendimiento habilitar la cadena de cálculo de fórmulas: FormulaSettings.EnableCalculationChain.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Load the template workbook | |
Workbook workbook = new Workbook(dataDir + "book1.xls"); | |
// Print the time before formula calculation | |
Console.WriteLine(DateTime.Now); | |
// Set the CreateCalcChain as tue | |
workbook.Settings.FormulaSettings.EnableCalculationChain = true; | |
// Calculate the workbook formulas | |
workbook.CalculateFormula(); | |
// Print the time after formula calculation | |
Console.WriteLine(DateTime.Now); | |
//change the value of one cell | |
workbook.Worksheets[0].Cells["A1"].PutValue("newvalue"); | |
//re-calculate those formulas which depend on cell A1 | |
workbook.CalculateFormula(); |
Importante saber
Temas avanzados
- Agregar celdas a la ventana de seguimiento de fórmulas de Microsoft Excel
- Cálculo de la función IFNA utilizando Aspose.Cells
- Cálculo de fórmulas de matriz de tablas de datos
- Cálculo de las funciones MINIFS y MAXIFS de Excel 2016
- Reducir el tiempo de cálculo del método Cell.Calculate
- Detección de referencia circular
- Cálculo directo de una función personalizada sin escribirla en una hoja de cálculo
- Implementar un motor de cálculo personalizado para extender el motor de cálculo predeterminado de Aspose.Cells
- Interrumpir o cancelar el cálculo de fórmulas de una hoja de cálculo
- Devolver un rango de valores utilizando AbstractCalculationEngine
- Devolver un rango de valores utilizando ICustomFunction
- Configurar el modo de cálculo de fórmulas de una hoja de cálculo
- Usando la función FormulaText en Aspose.Cells
- Usar la función ICustomFunction