Обзор функций

Обзор возможностей

Aspose.Cells FOSS for Go’s API сосредоточен на Workbook, Worksheet, Cells и Cell. Это руководство рассматривает другие возможности библиотеки: стилизация, проверка данных, таблицы, изображения и потоковое чтение больших файлов.


Стилизация ячеек

Сгруппируйте настройки 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

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 управляет 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)

Проверка диапазона целых чисел использует DataValidationTypeWhole с Formula1/Formula2 в качестве нижней и верхней границ.


Таблицы

Worksheet.AddTable создает структурированный Table по диапазону, с необязательной строкой заголовка и именованным стилем таблицы:

wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]

tbl := ws.AddTable("A1:F6")
tbl.HasHeaderRow = true
tbl.StyleName = "TableStyleMedium6"

Получите существующую таблицу по имени с помощью Worksheet.GetTable(name).


Изображения

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 читает лист рабочей книги построчно через обратный вызов, поэтому книга с несколькими тысячами строк никогда не загружается полностью в память:

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)
}

Советы и лучшие практики

  • Используйте StreamingReader вместо полной загрузки Workbook, когда файл может содержать тысячи строк, и вам нужно только чтение, а не изменение.
  • Создайте Style один раз и переиспользуйте его в разных ячейках, вместо того чтобы создавать новый для каждой ячейки.
  • Cell.SetFormula сохраняет строку формулы дословно — она вычисляется Excel или LibreOffice при открытии, а не библиотекой во время сохранения.
  • Проверьте возвращаемое значение error из Save, AddDataValidation и вызовов импорта/экспорта CSV — ввод/вывод таблиц может завершиться ошибкой из-за недействительных путей или некорректного ввода.

Распространённые проблемы

IssueCauseИсправить
Значение ячейки не отображается после SetСсылка на неправильный лист или ячейку за пределами диапазонаПроверьте индекс Worksheet и то, что ссылка в формате A1 соответствует нужной ячейке
Формула отображается как обычный текст вместо вычисленияБиблиотека хранит только строку формулы; она не вычисляет формулыОткройте файл в Excel или LibreOffice, которые выполняют расчёт при открытии
Проверка данных не видна в ExcelПvalidation была добавлена к диапазону, который не включает целевую ячейкуУбедитесь, что строка диапазона (например, "A2:A10") охватывает ячейки, которые вы хотите проверять

FAQ

Библиотека сама вычисляет формулы?

Cell.SetFormula/GetFormula хранят строку формулы, которую Excel или LibreOffice вычисляет при открытии файла.

Могу ли я stream-write большие рабочие книги, а не только stream-read их?

StreamingReader охватывает потоковое чтение. Запись больших книг в настоящее время происходит через стандартный в-памяти Workbook/Worksheet API.

Применяет ли AddTable автофильтр автоматически?

Это не подтверждено в текущей поверхности API — документированы только поля HasHeaderRow и StyleName как Table. Проверьте сгенерированный файл .xlsx, если это важно для вашего случая использования.


API Reference Сводка

Класс / МетодОписание:
Workbook.NewWorkbook / SaveСоздайте и сохраните книгу
Worksheet.CellsПолучите доступ к коллекции ячеек листа
Cells.Get / Set / Remove / AllЧитать, записывать, удалять и перечислять ячейки
Cell.SetStyle / SetFormula / GetFormulaПрименять стили и формулы к ячейке
Style, Font, Fill, Alignment, BorderСоздавать многократно используемое форматирование ячеек
Worksheet.AddDataValidationПривязать правило проверки к диапазону ячеек
Worksheet.AddTable / GetTableСоздавать и получать структурированные диапазоны таблиц
Worksheet.AddPicture / Picture.SetAnchor(row, col)Встраивать и размещать изображения
StreamingReader.ProcessRowsТранслировать лист построчно
Workbook.ExportToCSV / ImportFromCSVКонвертировать между XLSX и CSV
Workbook.SetPassword / VerifyPasswordЗащитить и проверить пароль рабочей книги

См. также:

 Русский