Введение
Aspose.Cells FOSS for Go — это чисто Go-библиотека для работы с электронными таблицами Excel. Она предоставляет API для создания новых книг с нуля, записи и стилизации значений ячеек, применения правил проверки данных, построения структурированных таблиц, внедрения изображений и построчного чтения больших файлов .xlsx — всё без каких-либо нативных зависимостей C или C++.
Библиотека доступна как Go-модуль по адресу github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go и распространяется под лицензией MIT. Установите её с помощью go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26 в любой проект на Go 1.24+.
В этой статье рассматриваются основные возможности: стилизация ячеек, проверка данных, таблицы, изображения и потоковое чтение.
Ключевые особенности
Стилизация ячеек
Сгруппируйте настройки Font, Fill, Alignment и Border в переиспользуемый Style, а затем примените его к ячейке с помощью Cell.SetStyle:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
boldStyle := cells_foss.NewStyle()
boldStyle.Font.Bold = true
boldStyle.Font.Size = 12
cell, _ := ws.Cells().Get("A1")
cell.SetStyle(boldStyle)
Alignment управляет Horizontal, Vertical и WrapText; Border управляет видимостью правил Top, Bottom, Left и Right, а также Color.
Проверка данных
Worksheet.AddDataValidation привязывает правило проверки к диапазону ячеек. Структура DataValidation содержит тип правила Type, одно или два значения Formula и поля сообщений об ошибке:
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)
Таблицы
Worksheet.AddTable создаёт структурированную Table над диапазоном, с необязательной строкой заголовка и именованным стилем таблицы:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Item")
ws.Cells().Set("B1", "Qty")
tbl := ws.AddTable("A1:B2")
tbl.HasHeaderRow = true
tbl.StyleName = "TableStyleMedium6"
Изображения
Worksheet.AddPicture внедряет изображение; Picture.SetAnchor(row, col) позиционирует его:
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)
Потоковая передача больших файлов
StreamingReader читает лист построчно через callback, поэтому книга с несколькими тысячами строк никогда не загружается полностью в память:
sr := cells_foss.NewStreamingReader("large_workbook.xlsx")
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)
}
Быстрый старт
Установите модуль:
go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26Минимальный рабочий процесс — создайте рабочую книгу, запишите две ячейки, сделайте заголовок полужирным и сохраните:
package main
import (
"fmt"
cells_foss "github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26/aspose/cells_foss"
)
func main() {
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Product")
ws.Cells().Set("B1", "Revenue")
boldStyle := cells_foss.NewStyle()
boldStyle.Font.Bold = true
for _, ref := range []string{"A1", "B1"} {
cell, _ := ws.Cells().Get(ref)
cell.SetStyle(boldStyle)
}
if err := wb.Save("report.xlsx"); err != nil {
fmt.Printf("Error saving workbook: %v\n", err)
return
}
fmt.Println("Workbook saved to report.xlsx")
}
Поддерживаемые форматы
| Формат | Расширение | Чтение | Запись |
|---|---|---|---|
| XLSX | .xlsx | — | ✓ |
| CSV | .csv | ✓ | ✓ |
XLSX-рабочие книги создаются в памяти с помощью NewWorkbook и сохраняются через Workbook.Save. CSV работает в обеих направлениях с помощью Workbook.ImportFromCSV и Workbook.ExportToCSV.
Открытый исходный код и лицензирование
Aspose.Cells FOSS для Go распространяется под лицензией MIT. Нет ограничений по использованию, нет плат за выполнение и нет требований к регистрации. Исходный код доступен по адресу github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go.
Коммерческое использование разрешено в соответствии с условиями лицензии MIT. Если вашему проекту требуется поддержка уровня предприятия, расширенное покрытие форматов или интеграция с облаком, Aspose.Cells — Enterprise Product Family является отдельным коммерческим предложением.