Gambaran Fitur
Ikhtisar Fitur
Aspose.Cells FOSS untuk API Go berfokus pada Workbook, Worksheet, Cells, dan Cell. Panduan ini membahas kemampuan lain dari pustaka: styling, data validation, tables, pictures, dan streaming reads untuk file besar.
Penataan Sel
Kelompokkan Font, Fill, Alignment, dan Border ke dalam Style yang dapat digunakan kembali, lalu terapkan pada sel dengan Cell.SetStyle:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
boldStyle := cells_foss.NewStyle()
boldStyle.Font.Bold = true
boldStyle.Font.Size = 12
highlightStyle := cells_foss.NewStyle()
highlightStyle.Font.Color = "FFFFFFFF"
highlightStyle.Font.Bold = true
highlightStyle.Fill = &cells_foss.Fill{
Type: cells_foss.FillTypeSolid,
Color: "FF4472C4",
}
cell, _ := ws.Cells().Get("A1")
cell.SetStyle(boldStyle)Alignment mengontrol Horizontal, Vertical, dan WrapText; Border mengontrol Top, Bottom, Left, dan Right visibilitas aturan plus Color.
Validasi Data
Worksheet.AddDataValidation menempelkan aturan validasi ke rentang sel. Struct DataValidation membawa aturan Type, satu atau dua nilai Formula, dan bidang pesan kesalahan:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
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,
}
ws.AddDataValidation("A2:A10", dv)Validasi rentang bilangan bulat menggunakan DataValidationTypeWhole dengan Formula1/Formula2 sebagai batas bawah dan atas.
Tabel
Worksheet.AddTable membuat Table terstruktur atas rentang, dengan baris header opsional dan gaya tabel bernama:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
tbl := ws.AddTable("A1:F6")
tbl.HasHeaderRow = true
tbl.StyleName = "TableStyleMedium6"Ambil tabel yang sudah ada berdasarkan nama dengan Worksheet.GetTable(name).
Gambar
Worksheet.AddPicture menyisipkan gambar; Picture.SetAnchor(row, col) menempatkannya:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
imageBytes := []byte{} // populate with real image bytes before use
pic := &cells_foss.Picture{Data: imageBytes, Format: "png"}
ws.AddPicture(pic)
pic.SetAnchor(5, 0)Streaming File Besar
StreamingReader membaca lembar kerja baris per baris melalui callback, sehingga buku kerja dengan ribuan baris tidak pernah perlu dimuat sepenuhnya ke memori:
path := "outputfiles/large_workbook.xlsx"
sr := cells_foss.NewStreamingReader(path)
err := sr.ProcessRows("Sheet1", func(rowIdx int, cells map[string]string) error {
// process one row at a time
return nil
})
if err != nil {
fmt.Printf("Error streaming: %v\n", err)
}Tips dan Praktik Terbaik
- Gunakan
StreamingReaderalih-alih memuatWorkbooksecara lengkap ketika sebuah file mungkin memiliki ribuan baris dan Anda hanya perlu membacanya, bukan memodifikasinya. - Buat
Stylesatu kali dan gunakan kembali di banyak sel daripada membuat yang baru untuk setiap sel. Cell.SetFormulamenyimpan string formula persis — formula dievaluasi oleh Excel atau LibreOffice saat dibuka, bukan oleh perpustakaan saat disimpan.- Periksa nilai kembali
errordariSave,AddDataValidation, dan panggilan impor/ekspor CSV — I/O spreadsheet dapat gagal pada jalur yang tidak valid atau input yang rusak.
Masalah Umum
| Issue | Cause | Perbaiki |
|---|---|---|
Nilai sel tidak terlihat setelah Set | Mereferensikan lembar yang salah atau referensi sel di luar jangkauan | Konfirmasikan indeks Worksheet dan bahwa referensi gaya A1 cocok dengan sel yang dimaksud |
| Formula ditampilkan sebagai teks mentah alih-alih dihitung | Pustaka hanya menyimpan string formula; tidak mengevaluasi formula | Buka file di Excel atau LibreOffice, yang melakukan perhitungan saat dibuka |
| Validasi data tidak terlihat di Excel | Validasi ditambahkan ke rentang yang tidak mencakup sel target | Pastikan string rentang (misalnya "A2:A10") mencakup sel yang Anda harapkan untuk divalidasi |
FAQ
Apakah perpustakaan mengevaluasi rumusnya sendiri?
No. Cell.SetFormula/GetFormula menyimpan string formula yang dievaluasi oleh Excel atau LibreOffice ketika file dibuka.
Bisakah saya stream-write workbook besar, bukan hanya stream-read mereka?
StreamingReader mencakup pembacaan streaming. Menulis workbook besar saat ini melalui API standar in-memory Workbook/Worksheet.
Apakah AddTable secara otomatis menerapkan auto-filter?
Ini belum dikonfirmasi dalam API surface saat ini — hanya HasHeaderRow dan StyleName yang didokumentasikan sebagai Table. Verifikasi terhadap file .xlsx yang dihasilkan jika hal ini penting untuk kasus penggunaan Anda.
Ringkasan API Reference
| Kelas / Metode | Deskripsi |
|---|---|
Workbook.NewWorkbook / Save | Buat dan simpan workbook |
Worksheet.Cells | Akses koleksi sel untuk worksheet |
Cells.Get / Set / Remove / All | Baca, tulis, hapus, dan mengenumerasi sel |
Cell.SetStyle / SetFormula / GetFormula | Terapkan gaya dan rumus pada sel |
Style, Font, Fill, Alignment, Border | Susun pemformatan sel yang dapat digunakan kembali |
Worksheet.AddDataValidation | Lampirkan aturan validasi ke rentang sel |
Worksheet.AddTable / GetTable | Buat dan ambil rentang tabel terstruktur |
Worksheet.AddPicture / Picture.SetAnchor(row, col) | Sematkan dan posisikan gambar |
StreamingReader.ProcessRows | Streaming lembar kerja baris per baris |
Workbook.ExportToCSV / ImportFromCSV | Mengonversi antara XLSX dan CSV |
Workbook.SetPassword / VerifyPassword | Melindungi dan memeriksa kata sandi workbook |