Hur man laddar ett kalkylblad i Go

Hur man laddar ett kalkylblad i Go

Aspose.Cells FOSS för Go laddar ett befintligt .xlsx arbetsbok i minnet som en Workbook, vilket ger dig full åtkomst till dess arbetsblad och celler via standardbibliotekets API. Installera modulen med go get innan du börjar.

Steg-för-steg-guide

Steg 1: Installera paketet

go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26

Verifiera modulens version i din go.mod efter installationen.


Steg 2: Importera nödvändiga klasser

import (
	cells_foss "github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26/aspose/cells_foss"
)

Steg 3: Skapa och fylla i en arbetsbok för att ladda

Detta exempel skapar först en arbetsbok för att ha en riktig .xlsx-fil att ladda — i din egen kod, ersätt sökvägen med ett befintligt kalkylblad:

wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Product")
ws.Cells().Set("B1", "Price")
ws.Cells().Set("A2", "Widget A")
ws.Cells().Set("B2", 12.99)
wb.Save("outputfiles/products.xlsx")

Steg 4: Läs cellvärden från det inlästa kalkylbladet

Åtkomst till det första kalkylbladet via Worksheets[0] och läs enskilda celler med Cells().Get(ref):

wb := cells_foss.NewWorkbook()
wb.Worksheets[0].Cells().Set("B2", 12.99)

ws2 := wb.Worksheets[0]
cell, err := ws2.Cells().Get("B2")
if err != nil {
	fmt.Printf("Error reading cell: %v\n", err)
	return
}
fmt.Printf("Price: %v\n", cell.Value)

Steg 5: Enumerera alla ifyllda celler

Använd Cells().All() när du behöver iterera över varje cell som har satts, snarare än att läsa kända referenser en åt gången:

wb := cells_foss.NewWorkbook()
ws2 := wb.Worksheets[0]
ws2.Cells().Set("A1", "Product")

allCells := ws2.Cells().All()
for ref, c := range allCells {
	fmt.Printf("%s = %v\n", ref, c.Value)
}

Vanliga problem och lösningar

Get returnerar ett fel för en cellreferens. Referensen har ännu inte ställts in i samlingen. Bekräfta att cellen skrevs med Set, eller kontrollera den returnerade error explicit innan du använder cellen.

Värdena ser ut att vara av fel typ. Cell.Value reflekterar vilken typ som än skickades till Set (string, int, float64, och så vidare) — inspektera den med en type switch om du behöver förgrena dig baserat på den underliggande Go-typen.

Den laddade arbetsboken har ingen data på det förväntade bladet. Bekräfta att du indexerar rätt post i Worksheets — en arbetsbok kan ha mer än ett kalkylblad, och måldata kanske inte finns på Worksheets[0].

Vanliga frågor

Kräver inläsning av en arbetsbok att den ursprungliga filen fortfarande finns på disken?

Ja — Workbook läser från den filsökväg du anger. Håll källfilen åtkomlig under hela inläsningsprocessen.

Kan jag ändra en cell efter inläsning och spara förändringarna tillbaka?

Ja — Cells().Set fungerar på en inläst arbetsbok på samma sätt som på en ny skapad; anropa Save igen för att skriva dina ändringar.

Finns det ett sätt att undvika att ladda hela filen i minnet?

Ja — använd StreamingReader.ProcessRows för stora filer där du bara behöver läsa rader sekventiellt snarare än att ladda hela arbetsboken.

Se även

 Svenska