Arbeta med celler
Översikt
Varje kalkylblad exponerar en cells samling som mappar Excel‑liknande adresssträngar (såsom "A1", "B3") till Cell objekt. Du får åtkomst till en cell direkt via indexering:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Access a cell by address
cell = ws.cells["A1"]Värden, formler och stilinformation finns alla på Cell objektet. Du kan antingen ändra en cell på plats genom att skriva till dess .value eller .formula egenskap, eller ersätta cellen helt genom att tilldela en ny Cell instans till adressen.
Läsa och skriva värden
Tilldela till cell.value för att skriva en sträng, heltal eller flyttal. Läs samma egenskap igen för att hämta vad som än lagrats.
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
##Write a string
ws.cells["A1"].value = "Hello, world"
##Write an integer
ws.cells["A2"].value = 42
##Write a float
ws.cells["A3"].value = 3.14159
##Read values back
print(ws.cells["A1"].value) # Hello, world
print(ws.cells["A2"].value) # 42
print(ws.cells["A3"].value) # 3.14159
workbook.save("values_demo.xlsx")Det .value egenskapen accepterar vilken Python skalär som helst. Biblioteket lagrar den Python-typen som den är; ingen implicit konvertering sker vid skrivning.
Använda Cell‑konstruktorn
Den Cell konstruktorn låter dig skapa en cell med ett värde (och valfritt en formel) i ett enda uttryck. Tilldela det resulterande Cell objektet till adresssubscript för att placera det i bladet.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Integer cell
ws.cells["A1"] = Cell(42)
##String cell
ws.cells["A2"] = Cell("Revenue")
##Float cell
ws.cells["A3"] = Cell(3.14)
##Explicitly empty cell (no value, no formula)
ws.cells["A4"] = Cell(None)
workbook.save("cell_constructor_demo.xlsx")Det första positionsargumentet till Cell är värdet. När du skickar None det cellen lagras utan värde, vilket är användbart när du avser att sätta en formel separat eller vill ha en uttryckligen tom cell snarare än en frånvarande.
Formelceller
En formelcell lagrar en Excel‑kompatibel uttryckssträng tillsammans med (eller i stället för) ett statiskt värde. Det finns två sätt att skapa en sådan.
Via Cell-konstruktorn — skicka None som värdet och formelsträngen som det andra argumentet:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(20)
ws.cells["A3"] = Cell(30)
##Formula via constructor: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
workbook.save("formula_constructor.xlsx")Via .formula egenskap — sätt egenskapen på en befintlig cell:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
for i, v in enumerate([5, 10, 15, 20, 25], start=1):
ws.cells[f"A{i}"].value = v
ws.cells["B1"].formula = "=AVERAGE(A1:A5)"
workbook.save("formula_property.xlsx")Snabbreferens för vanliga formler
| Syfte | Formelsträng |
|---|---|
| Summera ett intervall | =SUM(A1:A10) |
| Genomsnitt av ett intervall | =AVERAGE(A1:A10) |
| Maximalt värde | =MAX(A1:A10) |
| Minimivärde | =MIN(A1:A10) |
| Räkna icke‑tomma | =COUNT(A1:A10) |
| Villkorligt värde | =IF(A1>0,"Positive","Non-positive") |
| Slå upp ett värde | =VLOOKUP(D1,A1:B10,2,FALSE) |
| Sammanfoga strängar | =CONCATENATE(A1," ",B1) |
Formelsträngar måste börja med =. Biblioteket lagrar dem ordagrant; Excel (eller en kompatibel läsare) utvärderar uttrycket när filen öppnas.
Iterera över data
Använd en standard Python loop för att fylla en kolumn eller rad från en lista:
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
monthly_sales = [12_500, 14_200, 9_800, 17_600, 21_100, 18_400]
##Write a header
ws.cells["A1"].value = "Monthly Sales"
##Write data starting at row 2 (index 1 → address A2)
for i, val in enumerate(monthly_sales, start=2):
ws.cells[f"A{i}"].value = val
##Write a SUM formula below the data
last_row = 1 + len(monthly_sales) # row index of last data cell
ws.cells[f"A{last_row + 1}"].formula = f"=SUM(A2:A{last_row})"
workbook.save("monthly_sales.xlsx")Den enumerate(iterable, start=N) mönstret mappar rent på Excels radnummer eftersom Excels rader är 1‑baserade. Startar vid start=2 reserverar rad 1 för en rubrik.
Blandade värdetyper
Följande kompletta exempel bygger ett litet dataset med en textuell rubrikrad, tre datarader som innehåller heltal, flyttal och strängar, samt en formelrad som summerar de numeriska kolumnerna.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Header row ---
ws.cells["A1"].value = "Product"
ws.cells["B1"].value = "Units Sold"
ws.cells["C1"].value = "Unit Price"
ws.cells["D1"].value = "Revenue"
##--- Data rows ---
##Row 2
ws.cells["A2"] = Cell("Widget A")
ws.cells["B2"] = Cell(120)
ws.cells["C2"] = Cell(9.99)
ws.cells["D2"] = Cell(None, "=B2*C2")
##Row 3
ws.cells["A3"] = Cell("Widget B")
ws.cells["B3"] = Cell(85)
ws.cells["C3"] = Cell(14.50)
ws.cells["D3"] = Cell(None, "=B3*C3")
##Row 4
ws.cells["A4"] = Cell("Widget C")
ws.cells["B4"] = Cell(200)
ws.cells["C4"] = Cell(4.75)
ws.cells["D4"] = Cell(None, "=B4*C4")
##--- Summary row ---
ws.cells["A5"].value = "TOTAL"
ws.cells["B5"] = Cell(None, "=SUM(B2:B4)")
ws.cells["D5"] = Cell(None, "=SUM(D2:D4)")
workbook.save("mixed_types_dataset.xlsx")
print("Saved mixed_types_dataset.xlsx")Efter att ha öppnat filen i Excel (eller någon kompatibel kalkylbladsapplikation), den D kolumnen och den B5 / D5 celler kommer att visa de utvärderade resultaten av formeluttrycken.
Tips
None värde vs tom sträng
Cell(None) och ws.cells["A1"].value = None skapa en cell utan lagrad värde — omöjligt att skilja från en cell som aldrig skrivits i de flesta kalkylblad läsare. Cell("") eller ws.cells["A1"].value = "" skapa en cell som explicit innehåller en tom sträng, vilket vissa läsare och formler behandlar annorlunda (till exempel, =COUNT ignorerar tomma-sträng-celler på samma sätt som den ignorerar tomma celler, men =COUNTA räknar dem).
Formelsträng vs statiskt värde
Läsa .value från en formelcell returnerar None (eller det senaste cachade värdet om ett sattes innan formeln tilldelades). Läsa .formula returnerar den uttryckssträngen. Om du behöver skilja mellan en formelcell och en plain-value cell vid körning, kontrollera om ws.cells["A1"].formula är inte tom:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula: {cell.formula}")
else:
print(f"Value: {cell.value}")Se även
- API-referens: Fullständig klass- och metoddokumentation för
aspose.cells_foss - Kunskapsbas: Uppgiftsorienterade hur-man-gör-guider
- Produktöversikt: Sammanfattning av funktioner och möjligheter
- Komma igång / Installation: pip install och konfiguration
- Blogg: Introducerar Aspose.Cells FOSS: Biblioteksöversikt och snabbstart