功能概述
功能概述
Aspose.Cells FOSS for Go 的 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 进行求值,而不是在保存时由库求值。- 检查来自
Save、AddDataValidation和 CSV 导入/导出调用的error返回值——电子表格 I/O 可能因路径无效或输入格式错误而失败。
常见问题
| Issue | Cause | 修复 |
|---|---|---|
单元格值在 Set 之后不可见 | 引用了错误的工作表或超出范围的单元格引用 | 确认 Worksheet 索引,并确保 A1 样式引用与目标单元格匹配 |
| 公式显示为原始文本而未计算 | 该库仅存储公式字符串;不对公式进行求值 | 在 Excel 或 LibreOffice 中打开文件,这些程序会在打开时进行计算 |
| 数据验证在 Excel 中不可见 | 验证已添加到不包含目标单元格的范围 | 确认范围字符串(例如 "A2:A10")覆盖了您期望验证的单元格 |
FAQ
库本身会对公式进行求值吗?
No. Cell.SetFormula/GetFormula 存储一个公式字符串,Excel 或 LibreOffice 在打开文件时进行评估。
我可以流式写入大型工作簿,而不仅仅是流式读取它们吗?
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 | 保护并检查工作簿密码 |