Aspose.Cells FOSS for Go este o bibliotecă gratuită, open-source pentru lucrul cu fișiere de calcul Excel în aplicații Go. Instalați-o cu go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26 și începeți să creați registre de lucru, să citiți și să scrieți celule, să aplicați stiluri, să adăugați validare de date și să exportați în CSV, fără a necesita Microsoft Excel sau orice dependență Office.
Biblioteca expune un mic, idiomatic API Go construit în jurul lui Workbook, Worksheet, Cells și Cell. Accesați celulele prin colecția Cells() cu Get/Set/Remove, grupați formatarea în obiecte reutilizabile Style construite din Font, Fill, Alignment și Border, și construiți intervale structurate Table cu un rând de antet și stil de tabel numit. Un StreamingReader dedicat citește registrele de lucru .xlsx rând cu rând printr-un callback, astfel încât fișierele mari pot fi procesate fără a încărca întreaga foaie în memorie.
go.mod nu declară dependențe externe — biblioteca este construită în totalitate pe bibliotecile standard Go. Este licențiată sub MIT, găzduită pe GitHub și se instalează cu o singură comandă go get; fără cgo, fără biblioteci native Office și fără pachete de sistem de configurat. Pentru familia de produse enterprise, vedeți Aspose.Cells — Enterprise Product Family.
Cells().Get(ref) / Cells().Set(ref, value).Cell.SetFormula/GetFormula stochează un șir de formulă în celulă — evaluat de Excel sau LibreOffice la deschidere, nu de bibliotecă la salvare.Workbook.ExportToCSV/ImportFromCSV și Worksheet.ToCSV/FromCSV convertesc între XLSX și CSV.StreamingReader.ProcessRows transmite un rând al foii de calcul rând cu rând printr-un callback, pentru procesarea fișierelor mari fără a încărca întreaga foaie în memorie.Workbook.SetPassword/VerifyPassword protejează și verifică parolele workbook-ului.StreamingReader în loc să le încarci complet în memorie.Font (name, size, bold, italic, color), Fill (type, color), Alignment (horizontal, vertical, wrap text) și Border (top/bottom/left/right, color) într-un Style reutilizabil, aplicat cu Cell.SetStyle.Worksheet.AddDataValidation atașează reguli de validare de tip listă și interval de numere întregi, fiecare cu un titlu de eroare personalizat, mesaj și stil de eroare.Worksheet.AddTable/GetTable creează un interval structurat Table cu un rând de antet opțional și un stil de tabel numit.Worksheet.AddPicture încorporează o imagine Picture cu poziționarea SetAnchor(row, col).Aspose.Cells FOSS for Go se instalează cu o singură comandă go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26. go.mod nu are intrări require — nu există dependențe externe de verificat sau de adăugat în vendor.
Suprafața API este intenționat compactă: Workbook, Worksheet, Cells, Cell, Style și câteva tipuri de suport acoperă crearea de foi de calcul, stilizarea, validarea și CSV/streaming I/O. Codul sursă este licențiat sub MIT și găzduit pe GitHub.
Instalați cu go get, creaţi un Workbook, accesaţi primul Worksheet şi scrieţi valori direct în celule prin colecţia Cells() înainte de a salva.
go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26func main() {
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Hello")
ws.Cells().Set("B1", "World")
ws.Cells().Set("A2", "Answer")
ws.Cells().Set("B2", 42)
outPath := "outputfiles/basic.xlsx"
if err := wb.Save(outPath); err != nil {
fmt.Printf("Error saving workbook: %v\n", err)
return
}
fmt.Printf("Workbook saved to %s\n", outPath)
}
Atașați o validare de tip listă (un meniu derulant cu valori permise) și o validare de interval de numere întregi pentru două coloane diferite, fiecare având propriul titlu și mesaj de eroare.
func main() {
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Fruit")
ws.Cells().Set("A2", "Apple")
ws.Cells().Set("A3", "Banana")
dv := &cells_foss.DataValidation{
Type: cells_foss.DataValidationTypeList,
Formula1: `"Apple,Banana,Cherry,Dragonfruit"`,
AllowBlank: true,
ShowErrorMessage: true,
ErrorTitle: "Invalid Fruit",
ErrorMessage: "Please pick a fruit from the list.",
ErrorStyle: cells_foss.ErrorStyleStop,
}
if err := ws.AddDataValidation("A2:A10", dv); err != nil {
fmt.Printf("Error: %v\n", err)
return
}
dv2 := &cells_foss.DataValidation{
Type: cells_foss.DataValidationTypeWhole,
Formula1: "1",
Formula2: "100",
ShowErrorMessage: true,
ErrorTitle: "Invalid Value",
ErrorMessage: "Enter a whole number between 1 and 100.",
ErrorStyle: cells_foss.ErrorStyleWarning,
}
ws.Cells().Set("B1", "Score (1-100)")
ws.AddDataValidation("B2:B10", dv2)
outPath := "outputfiles/data_validation.xlsx"
if err := wb.Save(outPath); err != nil {
fmt.Printf("Error saving workbook: %v\n", err)
return
}
fmt.Printf("Workbook saved to %s\n", outPath)
}
StreamingReader citește o foaie de calcul rând cu rând printr-un callback, astfel încât un registru cu mii de rânduri nu trebuie să fie încărcat complet în memorie.
func main() {
genPath := "outputfiles/streaming_data.xlsx"
sr := cells_foss.NewStreamingReader(genPath)
rowCount := 0
var totalScore float64
err := sr.ProcessRows("Sheet1", func(rowIdx int, cells map[string]string) error {
rowCount++
if rowIdx == 1 {
fmt.Printf(" Header: %v\n", cells)
return nil
}
if score, ok := cells["C"+fmt.Sprint(rowIdx)]; ok {
var s float64
fmt.Sscanf(score, "%f", &s)
totalScore += s
}
return nil
})
if err != nil {
fmt.Fprintf(os.Stderr, "Error streaming: %v\n", err)
os.Exit(1)
}
fmt.Printf("Streamed %d rows (header + %d data rows)\n", rowCount, rowCount-1)
}
Aspose.Cells FOSS for Go este lansat sub Licența MIT, care permite utilizarea comercială și open-source.
Da. Licența MIT permite utilizarea comercială fără nicio obligație de a dezvălui codul sursă propriu, atâta timp cât se păstrează notificarea originală de drepturi de autor.
Adăugați-l ca dependență de modul Go cu go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26. Necesită Go 1.24 sau o versiune ulterioară.
Nu. go.mod nu declară nicio intrare require — biblioteca este construită în întregime pe biblioteca standard Go.
Da. StreamingReader.ProcessRows citește o foaie de lucru rând cu rând printr-un callback, evitând o încărcare completă în memorie.