Введение

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 является отдельным коммерческим предложением.


Начало работы

Сопутствующие ресурсы