Hantera formler för Excel filer

Introduktion

En av de mest övertygande funktionerna i Microsoft Excel är dess förmåga att bearbeta data med formler och funktioner. Microsoft Excel tillhandahåller ett antal inbyggda funktioner och formler som hjälper användare att snabbt utföra komplexa beräkningar. Aspose.Cells för Python via .NET erbjuder också ett stort antal inbyggda funktioner och formler som hjälper utvecklare att enkelt beräkna värden. Aspose.Cells för Python via .NET stödjer även tilläggsfunktions. Dessutom stöder Aspose.Cells för Python via .NET array och R1C1-formler.

Hur man Använder formler och funktioner

Aspose.Cells för Python via .NET tillhandahåller en klass, Workbook, som representerar en Microsoft Excel-fil. Klassen Workbook innehåller en worksheets-samling som ger tillgång till varje arbetsblad i Excel-filen. Ett arbetsblad representeras av klassen Worksheet. Klassen Worksheet tillhandahåller en cells-samling. Varje objekt i Cells-samlingen representerar ett objekt av klassen Cell.

Det är möjligt att använda formler på celler med egenskaper och metoder som erbjuds av Cell-klassen, som diskuteras mer detaljerat nedan.

  • Använda inbyggda funktioner.
  • Använda tilläggsfunktioner.
  • Arbeta med matrisformler.
  • Skapa en R1C1-formel.

Hur man Använder Inbyggda Funktioner

Inbyggda funktioner eller formler tillhandahålls som färdiga funktioner för att minska utvecklarnas insats och tid. Se en lista över inbyggda funktioner som stöds av Aspose.Cells för Python via .NET. Funktionerna listas i alfabetisk ordning. Fler funktioner kommer att stödjas i framtiden.

Aspose.Cells för Python via .NET stöder de flesta av formlerna eller funktionerna som erbjuds av Microsoft Excel. Utvecklare kan använda dessa formler via API:et eller designer kalkylblad. Aspose.Cells för Python via .NET stöder ett stort antal matematiska, sträng-, booleska, datum/tid-, statistik-, databas-, uppslags- och referensformler.

Använd Cell-klassens formula-egenskap för att lägga till en formula i en cell. Komplexa formler, till exempel

 = H7*(1+IF(P7 = $L$3,$M$3, (IF(P7=$L$4,$M$4,0))))

, stöds också i Aspose.Cells för Python via .NET. När du tillämpar en formel på en cell, 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 separera funktionsparametrar.

I nedanstående exempel tillämpas en komplex formel på den första cellen i ett kalkylblads cells-samling. Formeln använder en inbyggd IF-funktion som tillhandahålls av Aspose.Cells för Python via .NET.

from aspose.cells import Workbook
from os import os, path
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Create directory if it is not already present.
IsExists = path.isdir(dataDir)
if notIsExists:
os.makedirs(dataDir)
# Instantiating a Workbook object
workbook = Workbook()
# Adding a new worksheet to the Excel object
sheetIndex = workbook.worksheets.add()
# Obtaining the reference of the newly added worksheet by passing its sheet index
worksheet = workbook.worksheets[0]
# Adding a value to "A1" cell
worksheet.cells.get("A1").put_value(1)
# Adding a value to "A2" cell
worksheet.cells.get("A2").put_value(2)
# Adding a value to "A3" cell
worksheet.cells.get("A3").put_value(3)
# Adding a SUM formula to "A4" cell
worksheet.cells.get("A4").formula = "=SUM(A1:A3)"
# Calculating the results of formulas
workbook.calculate_formula()
# Get the calculated value of the cell
value = str(worksheet.cells.get("A4").value)
# Saving the Excel file
workbook.save(dataDir + "output.xls")

Hur man Använder Tilläggsfunktioner

Vi kan ha några användardefinierade formler som vi vill inkludera som en excel-tillägg. När du ställer in cell.Formula-funktionen fungerar inbyggda funktioner bra, men det finns ett behov av att ställa in de anpassade funktionerna eller formlerna med tilläggsfunktionerna.

Aspose.Cells för Python via .NET tillhandahåller funktioner för att registrera tilläggsfunktionsanvändning med worksheets.register_add_in_function(). Därefter, när vi sätter cell.Formula = någonFunktionFrånTillägget, innehåller den utdata excelfilen det beräknade värdet från Tilläggsfunktionen.

Följande XLAM-fil ska laddas ned för att registrera tilläggsfunktionen enligt nedanstående provkod. På samma sätt kan den resulterande filen “test_udf.xlsx” laddas ned för att kontrollera resultatet.

TestUDF.xlam

test_udf.xlsx

from aspose.cells import SaveFormat, Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# Create empty workbook
workbook = Workbook()
# Register macro enabled add-in along with the function name
id = workbook.worksheets.register_add_in_function(sourceDir + str(r"TESTUDF.xlam"), "TEST_UDF", False)
# Register more functions in the file (if any)
workbook.worksheets.register_add_in_function(id, "TEST_UDF1")
# Access first worksheet
worksheet = workbook.worksheets[0]
# Access first cell
cell = worksheet.cells.get("A1")
# Set formula name present in the add-in
cell.formula = "=TEST_UDF()"
# Save workbook to output XLSX format.
workbook.save(outputDir + str(r"test_udf.xlsx"), SaveFormat.XLSX)

Hur man Använder Matrisformel

Matrisformler är formler som tar matriser, istället för enskilda nummer, som argument till de funktioner som utgör formeln. När en matrisformel visas, omges den av måsvingar ({ }).

Vissa Microsoft Excel-funktioner returnerar matriser med värden. För att beräkna flera resultat med en arrayformel, ange matrisen i en cellintervall med samma antal rader och kolumner som matrisargumenten.

Det är möjligt att tillämpa en matrisformel på en cell genom att anropa Cell-klassens set_array_formula-metod. set_array_formula-metoden tar följande parametrar:

  • Arrayformel, arrayformeln.
  • Antal rader, antalet rader för att fylla resultatet av arrayformeln.
  • Antal kolumner, antalet kolumner för att fylla resultatet av matrisformeln.
from aspose.cells import Workbook
from os import os, path
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Create directory if it is not already present.
IsExists = path.isdir(dataDir)
if notIsExists:
os.makedirs(dataDir)
# Instantiating a Workbook object
workbook = Workbook()
# Adding a new worksheet to the Excel object
sheetIndex = workbook.worksheets.add()
# Obtaining the reference of the newly added worksheet by passing its sheet index
worksheet = workbook.worksheets[sheetIndex]
# Adding a value to "A1" cell
worksheet.cells.get("A1").put_value(1)
# Adding a value to "A2" cell
worksheet.cells.get("A2").put_value(2)
# Adding a value to "A3" cell
worksheet.cells.get("A3").put_value(3)
# Adding a value to B1
worksheet.cells.get("B1").put_value(4)
# Adding a value to "B2" cell
worksheet.cells.get("B2").put_value(5)
# Adding a value to "B3" cell
worksheet.cells.get("B3").put_value(6)
# Adding a value to C1
worksheet.cells.get("C1").put_value(7)
# Adding a value to "C2" cell
worksheet.cells.get("C2").put_value(8)
# Adding a value to "C3" cell
worksheet.cells.get("C3").put_value(9)
# Adding a SUM formula to "A4" cell
worksheet.cells.get("A6").set_array_formula("=LINEST(A1:A3,B1:C3,TRUE,TRUE)", 5, 3)
# Calculating the results of formulas
workbook.calculate_formula()
# Get the calculated value of the cell
value = str(worksheet.cells.get("A6").value)
# Saving the Excel file
workbook.save(dataDir + "output.xls")

Hur man Använder R1C1-formel

Lägg till en formel med referensstil R1C1 i en cell med klassens Cell r1c1_formula-egenskap.

from aspose.cells import Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Instantiating a Workbook object
workbook = Workbook(dataDir + "Book1.xls")
worksheet = workbook.worksheets[0]
# Setting an R1C1 formula on the "A11" cell,
# Row and Column indeces are relative to destination index
worksheet.cells.get("A11").r1c1_formula = "=SUM(R[-10]C[0]:R[-7]C[0])"
# Saving the Excel file
workbook.save(dataDir + "output.xls")

Fortsatta ämnen