Обзор функций
Обзор возможностей
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 — ввод/вывод таблиц может завершиться ошибкой из-за недействительных путей или некорректного ввода.
Распространённые проблемы
| Issue | Cause | Исправить |
|---|---|---|
Значение ячейки не отображается после 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 | Защитить и проверить пароль рабочей книги |