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