功能概述

功能概述

Aspose.Cells FOSS for Go 的 API 以 WorkbookWorksheetCellsCell 为中心。本文指南将逐步介绍该库的其他功能:样式、数据验证、表格、图片以及大文件的流式读取。


单元格样式

FontFillAlignmentBorder 设置组合成可复用的 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 控制 HorizontalVerticalWrapTextBorder 控制 TopBottomLeftRight 规则可见性以及 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 进行求值,而不是在保存时由库求值。
  • 检查来自 SaveAddDataValidation 和 CSV 导入/导出调用的 error 返回值——电子表格 I/O 可能因路径无效或输入格式错误而失败。

常见问题

IssueCause修复
单元格值在 Set 之后不可见引用了错误的工作表或超出范围的单元格引用确认 Worksheet 索引,并确保 A1 样式引用与目标单元格匹配
公式显示为原始文本而未计算该库仅存储公式字符串;不对公式进行求值在 Excel 或 LibreOffice 中打开文件,这些程序会在打开时进行计算
数据验证在 Excel 中不可见验证已添加到不包含目标单元格的范围确认范围字符串(例如 "A2:A10")覆盖了您期望验证的单元格

FAQ

库本身会对公式进行求值吗?

No. Cell.SetFormula/GetFormula 存储一个公式字符串,Excel 或 LibreOffice 在打开文件时进行评估。

我可以流式写入大型工作簿,而不仅仅是流式读取它们吗?

StreamingReader 负责流式读取。目前,写入大型工作簿仍通过标准的内存中 Workbook/Worksheet API。

AddTable 是否会自动应用自动筛选?

在当前的 API 表面尚未确认——仅有 HasHeaderRowStyleName 被记录为 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保护并检查工作簿密码

另请参阅

 中文