Aspose.Cells FOSS for Go adalah perpustakaan gratis dan sumber terbuka untuk bekerja dengan file spreadsheet Excel dalam aplikasi Go. Instal dengan go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26 dan mulailah membuat workbook, membaca dan menulis sel, menerapkan gaya, menambahkan validasi data, serta mengekspor ke CSV, tanpa memerlukan Microsoft Excel atau ketergantungan Office apa pun.
Perpustakaan ini menyediakan API Go yang kecil dan idiomatik yang dibangun di sekitar Workbook, Worksheet, Cells, dan Cell. Akses sel melalui koleksi Cells() dengan Get/Set/Remove, kelompokkan pemformatan ke dalam objek Style yang dapat digunakan kembali yang dibangun dari Font, Fill, Alignment, dan Border, serta buat rentang Table terstruktur dengan baris header dan gaya tabel bernama. StreamingReader khusus membaca workbook .xlsx baris demi baris melalui callback, sehingga file besar dapat diproses tanpa memuat seluruh sheet ke memori.
go.mod tidak mendeklarasikan dependensi eksternal — perpustakaan ini dibangun sepenuhnya di atas pustaka standar Go. Ini berlisensi MIT, dihosting di GitHub, dan diinstal dengan satu perintah go get; tidak ada cgo, tidak ada perpustakaan Office native, dan tidak ada paket sistem yang perlu dikonfigurasi. Untuk keluarga produk enterprise, lihat Aspose.Cells — Enterprise Product Family.
Cells().Get(ref) / Cells().Set(ref, value).Cell.SetFormula/GetFormula menyimpan string formula di sel — dievaluasi oleh Excel atau LibreOffice saat dibuka, bukan oleh pustaka saat disimpan.Workbook.ExportToCSV/ImportFromCSV dan Worksheet.ToCSV/FromCSV mengonversi antara XLSX dan CSV.StreamingReader.ProcessRows men-stream lembar kerja baris demi baris melalui callback, untuk pemrosesan file besar tanpa memuat seluruh lembar ke memori.Workbook.SetPassword/VerifyPassword melindungi dan memeriksa kata sandi workbook.StreamingReader alih-alih memuatnya sepenuhnya ke memori.Font (name, size, bold, italic, color), Fill (type, color), Alignment (horizontal, vertical, wrap text), dan Border (top/bottom/left/right, color) ke dalam Style yang dapat digunakan kembali, diterapkan dengan Cell.SetStyle.Worksheet.AddDataValidation menambahkan aturan validasi daftar dan rentang angka bulat, masing-masing dengan judul error khusus, pesan, dan gaya error.Worksheet.AddTable/GetTable membuat rentang Table terstruktur dengan baris header opsional dan gaya tabel yang dinamai.Worksheet.AddPicture menyisipkan gambar Picture dengan posisi SetAnchor(row, col).Aspose.Cells FOSS for Go diinstal dengan satu perintah go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26. go.mod tidak memiliki entri require — tidak ada dependensi eksternal untuk diverifikasi atau vendor.
Antarmuka API sengaja dibuat ringkas: Workbook, Worksheet, Cells, Cell, Style, dan beberapa tipe pendukung mencakup pembuatan spreadsheet, styling, validasi, dan I/O CSV/streaming. Basis kode berlisensi MIT dan dihosting di GitHub.
Instal dengan go get, buat sebuah Workbook, akses Worksheet pertama, dan tulis nilai langsung ke sel melalui koleksi Cells() sebelum menyimpan.
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)
}
Pasang validasi tipe daftar (dropdown nilai yang diizinkan) dan validasi rentang bilangan bulat pada dua kolom yang berbeda, masing-masing dengan judul dan pesan errornya sendiri.
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 membaca lembar kerja satu baris pada satu waktu melalui callback, sehingga buku kerja dengan ribuan baris tidak pernah harus dimuat sepenuhnya ke dalam memori.
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 dirilis di bawah MIT License, yang mengizinkan penggunaan komersial dan open-source.
Ya. Lisensi MIT mengizinkan penggunaan komersial tanpa kewajiban mengungkapkan kode sumber Anda sendiri, selama pemberitahuan hak cipta asli dipertahankan.
Tambahkan itu sebagai dependensi modul Go dengan go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26. Membutuhkan Go 1.24 atau lebih baru.
Tidak. go.mod tidak mendeklarasikan entri require — pustaka dibangun sepenuhnya pada pustaka standar Go.
Ya. StreamingReader.ProcessRows membaca lembar kerja baris demi baris melalui callback, menghindari pemuatan penuh ke memori.