Aspose.Cells FOSS for Go — безкоштовна, з відкритим вихідним кодом бібліотека для роботи з файлами електронних таблиць Excel у застосунках Go. Встановіть її за допомогою go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26 і починайте створювати книги, читати та записувати клітинки, застосовувати стилі, додавати перевірку даних і експортувати у CSV, без потреби у Microsoft Excel або будь-яких залежностях Office.
Бібліотека надає невеликий, ідіоматичний Go API, побудований навколо Workbook, Worksheet, Cells та Cell. Доступ до клітинок здійснюється через колекцію Cells() за допомогою Get/Set/Remove, оформлення групується у багаторазові об’єкти Style, створені з Font, Fill, Alignment та Border, а також створюються структуровані діапазони Table з рядком заголовка та іменованим стилем таблиці. Спеціальний StreamingReader читає книги .xlsx рядок за рядком за допомогою зворотного виклику, тому великі файли можна обробляти без завантаження всього листа в пам’ять.
go.mod не оголошує зовнішніх залежностей — бібліотека повністю побудована на стандартній бібліотеці Go. Вона має ліцензію MIT, розміщена на GitHub, і встановлюється однією командою go get; без cgo, без нативних бібліотек Office і без системних пакетів для налаштування. Для корпоративного сімейства продуктів дивіться Aspose.Cells — Enterprise Product Family.
Cells().Get(ref) / Cells().Set(ref, value).Cell.SetFormula/GetFormula зберігають рядок формули в клітинці — обчислюється Excel або LibreOffice під час відкриття, а не бібліотекою під час збереження.Workbook.ExportToCSV/ImportFromCSV та Worksheet.ToCSV/FromCSV конвертують між XLSX і CSV.StreamingReader.ProcessRows передає рядки листа по одній за допомогою зворотного виклику, що дозволяє обробляти великі файли без завантаження всього листа в пам’ять.Workbook.SetPassword/VerifyPassword захищають та перевіряють паролі робочої книги.StreamingReader замість повного завантаження в пам’ять.Font (name, size, bold, italic, color), Fill (type, color), Alignment (horizontal, vertical, wrap text) та Border (top/bottom/left/right, color) у багаторазовий Style, застосовуваний за допомогою Cell.SetStyle.Worksheet.AddDataValidation додає правила перевірки списку та діапазону цілих чисел, кожне з власним заголовком помилки, повідомленням та стилем помилки.Worksheet.AddTable/GetTable створює структурований діапазон Table з необов’язковим рядком заголовка та іменованим стилем таблиці.Worksheet.AddPicture вбудовує зображення Picture з позиціонуванням за допомогою SetAnchor(row, col).Aspose.Cells FOSS for Go встановлюється за допомогою однієї команди go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26. go.mod не містить записів require — немає зовнішніх залежностей для перевірки чи включення.
Інтерфейс API навмисно компактний: Workbook, Worksheet, Cells, Cell, Style та кілька допоміжних типів охоплюють створення електронних таблиць, стилізацію, валідацію та CSV/потоковий ввід/вивід. База коду має ліцензію MIT і розміщена на GitHub.
Встановіть за допомогою go get, створіть Workbook, отримайте доступ до першого Worksheet і безпосередньо запишіть значення в комірки через колекцію Cells() перед збереженням.
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)
}
Прикріпіть перевірку типу список (випадаючий список дозволених значень) та перевірку діапазону цілих чисел до двох різних колонок, кожна зі своїм заголовком та повідомленням про помилку.
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 читає лист електронної таблиці по одному рядку за раз через зворотний виклик, тому багаторядковий робочий лист у тисячах рядків ніколи не потребує повного завантаження в пам’ять.
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 випущено під ліцензією MIT, яка дозволяє комерційне та відкрито-джерельне використання.
Так. Ліцензія MIT дозволяє комерційне використання без зобов’язання розкривати ваш власний вихідний код, за умови збереження оригінального повідомлення про авторські права.
Додайте його як залежність модуля Go за допомогою go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26. Потрібен Go 1.24 або новіший.
Ні. go.mod не містить записів require — бібліотека повністю побудована на стандартній бібліотеці Go.
Так. StreamingReader.ProcessRows читає рядки листа по рядку через зворотний виклик, уникаючи повного завантаження в пам’ять.