Beräkna formler
Lägga till formler och beräkna resultat
Aspose.Cells har en inbyggd formelberäkningsmotor. Inte bara kan den omberäkna formler som importerats från designmallar, men den stöder också att beräkna resultaten av formler som har lagts till vid körning.
Aspose.Cells stöder de flesta formler eller funktioner som ingår i Microsoft Excel (Läs en lista över de funktioner som stöds av beräkningsmotorn). Dessa funktioner kan användas genom API:er eller designkalkylblad. Aspose.Cells stöder en stor uppsättning matematiska, sträng, booleska, datum/tid, statistiska, databaser, uppslag och referens formler.
Använd Formula-egenskapen eller SetFormula(…)-metoderna i Cell-klassen för att lägga till en formel i en cell. När du tillämpar en formel, börja alltid strängen med ett likhetstecken (=) som du gör när du skapar en formel i Microsoft Excel och använd ett kommatecken (,) för att avgränsa funktionsparametrar.
För att beräkna resultaten av formler kan användaren ringa CalculateFormula-metoden i klassen Workbook som bearbetar alla formler som finns inbäddade i en Excel-fil. Eller så kan användaren ringa CalculateFormula-metoden i klassen Worsheet som bearbetar alla formler som finns inbäddade i ett ark. Eller så kan användaren också ringa Calculate-metoden i klassen Cell som bearbetar formeln för en cell:
// 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"); |
Viktigt att veta för formler
Direkt beräkning av formel
Aspose.Cells har en inbyggd formelberäkningsmotor. Förutom att beräkna formler som importerats från en designfil kan Aspose.Cells också beräkna formelresultat direkt.
Ibland behöver du beräkna formelresultat direkt utan att lägga till dem i ett kalkylblad. Värdena för cellerna som används i formeln finns redan i ett kalkylblad och allt du behöver göra är att hitta resultatet av dessa värden baserat på några Microsoft Excel-formler utan att lägga till formeln i ett kalkylblad.
Du kan använda Aspose.Cells' API:er för formelberäkning från Worksheet till calculate resultaten av sådana formler utan att lägga till dem i kalkylbladet:
// 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()); |
Ovanstående kod ger följande utmatning:
Value of A1: 20
Value of A2: 30
Result of Sum(A1:A2): 50.0
Hur man beräknar formler upprepade gånger
När det finns massor av formler i arbetsboken och användaren behöver beräkna dem upprepade gånger med endast mindre justering av dem kan det vara till hjälp för prestanda att aktivera formelberäkningskedjan: 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(); |
Viktigt att veta
Fortsatta ämnen
- Lägg till celler i Microsoft Excel Formelövervakningsfönstret
- Beräkning av IFNA-funktionen med Aspose.Cells
- Beräkning av Array Formula av Data Tables
- Beräkning av Excel 2016 MINIFS och MAXIFS funktioner
- Minska tiden för beräkning av Cell.Calculate-metoden
- Upptäcka cirkulär referens
- Direkt beräkning av anpassad funktion utan att skriva den i en kalkylblad
- Implementera anpassad beräkningsmotor för att förlänga standardberäkningsmotorn för Aspose.Cells
- Avbryt eller avbryt formelberäkningen i arbetsbok
- Returnera en rad med värden med hjälp av AbstractCalculationEngine
- Returnera ett område av värden med hjälp av ICustomFunction
- Inställning av Formelberäkningsläge för Arbetsbok
- Användning av FormulaText-funktionen i Aspose.Cells
- Använda ICustomFunction-funktionen