1. Продукты
  2.   Aspose.Cells
  3.   Aspose.Cells FOSS for Go

Aspose.Cells FOSS для Go

Создавайте, изменяйте и экспортируйте таблицы Excel из Go — бесплатно и с открытым исходным кодом, без внешних зависимостей.

Open-Source Go библиотека для электронных таблиц Excel

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 построчно через callback, позволяя обрабатывать большие файлы без загрузки всего листа в память.

go.mod не объявляет внешних зависимостей — библиотека полностью построена на стандартной библиотеке Go. Она лицензирована под MIT, размещена на GitHub и устанавливается одной командой go get; без cgo, без нативных библиотек Office и без необходимости настраивать системные пакеты. Для корпоративного семейства продуктов см. Aspose.Cells — Enterprise Product Family.

Чтение и запись файлов Excel

  • Доступ к ячейкам: Чтение и запись значений с помощью Cells().Get(ref) / Cells().Set(ref, value).
  • Формулы: Cell.SetFormula/GetFormula сохраняют строку формулы в ячейке — вычисляется Excel или LibreOffice при открытии, а не библиотекой во время сохранения.
  • CSV-interop: Workbook.ExportToCSV/ImportFromCSV и Worksheet.ToCSV/FromCSV преобразуют между XLSX и CSV.
  • Потоковое чтение: StreamingReader.ProcessRows передаёт строки листа построчно через обратный вызов, позволяя обрабатывать большие файлы без загрузки всего листа в память.
  • Защита паролем: Workbook.SetPassword/VerifyPassword защищают и проверяют пароли рабочей книги.

Где Aspose.Cells FOSS может быть использовано

  • Конвейеры данных: Экспортировать результаты запросов к базе данных напрямую в XLSX или CSV.
  • Генерация отчетов: Создавать стилизованные Excel-отчёты из бэкенд-сервиса на Go.
  • Обработка больших файлов: Потоково обходить книги с несколькими тысячами строк с помощью StreamingReader, вместо полной загрузки в память.
  • ETL-конвейеры: Читать входные листы, преобразовывать данные и записывать выходные книги.
  • Автоматизация CI/CD: Генерировать артефакты таблиц внутри сборочных конвейеров на Go и Docker-контейнеров.

Оформление, проверка данных и таблицы

  • Объекты стилей: Сгруппировать Font (имя, размер, жирный, курсив, цвет), Fill (тип, цвет), Alignment (горизонтальное, вертикальное, перенос текста) и Border (верх/низ/лево/право, цвет) в переиспользуемый 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/v26
func 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 читает лист рабочей книги построчно через callback, поэтому книга с несколькими тысячами строк никогда не должна полностью загружаться в память.

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?

Aspose.Cells FOSS for Go выпущен под лицензией MIT, которая разрешает коммерческое и открытое использование.

Могу ли я использовать его в коммерческих продуктах?

Да. Лицензия MIT разрешает коммерческое использование без обязательства раскрывать ваш собственный исходный код, при условии, что оригинальное уведомление об авторском праве сохраняется.

Как установить Aspose.Cells FOSS for Go?

Добавьте его в качестве зависимости модуля Go с помощью go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26. Требуется Go 1.24 или более поздняя версия.

Есть ли какие-либо внешние зависимости?

Нет. go.mod объявляет отсутствие записей require — библиотека построена полностью на стандартной библиотеке Go.

Могу ли я обрабатывать большие книги без полной загрузки их в память?

Да. StreamingReader.ProcessRows читает лист строка за строкой через обратный вызов, избегая полной загрузки в память.

  

Ресурсы поддержки и обучения

 Русский