如何在 Go 中加载电子表格

如何在 Go 中加载电子表格

Aspose.Cells FOSS for Go 将现有的 .xlsx 工作簿加载到内存中作为 Workbook,通过标准库 API 为您提供对其工作表和单元格的完整访问。在开始之前,请使用 go get 安装模块。

分步指南

步骤 1:安装包

go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26

安装后,在您的 go.mod 中验证模块版本。


步骤 2:导入所需类

import (
	cells_foss "github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26/aspose/cells_foss"
)

步骤 3:创建并填充工作簿以加载

此示例首先创建一个工作簿,以获得一个真实的 .xlsx 文件用于加载 —— 在您自己的代码中,请将路径替换为现有的电子表格:

wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
ws.Cells().Set("A1", "Product")
ws.Cells().Set("B1", "Price")
ws.Cells().Set("A2", "Widget A")
ws.Cells().Set("B2", 12.99)
wb.Save("outputfiles/products.xlsx")

步骤 4:从已加载的工作表读取单元格值

通过 Worksheets[0] 访问第一个工作表,并使用 Cells().Get(ref) 读取各个单元格:

wb := cells_foss.NewWorkbook()
wb.Worksheets[0].Cells().Set("B2", 12.99)

ws2 := wb.Worksheets[0]
cell, err := ws2.Cells().Get("B2")
if err != nil {
	fmt.Printf("Error reading cell: %v\n", err)
	return
}
fmt.Printf("Price: %v\n", cell.Value)

步骤 5:枚举所有已填充的单元格

当需要遍历所有已设置的单元格,而不是一次读取已知引用时,请使用 Cells().All():

wb := cells_foss.NewWorkbook()
ws2 := wb.Worksheets[0]
ws2.Cells().Set("A1", "Product")

allCells := ws2.Cells().All()
for ref, c := range allCells {
	fmt.Printf("%s = %v\n", ref, c.Value)
}

常见问题及解决方案

Get 对单元格引用返回错误。 该引用尚未在集合中设置。请确认单元格已使用 Set,或检查返回的 error 在使用单元格前显式检查。

值似乎类型不正确。 Cell.Value 反映传递给的任意类型 Set (string、int、float64 等)——如果需要基于底层 Go 类型进行分支,可使用类型切换进行检查。

加载的工作簿在预期的工作表上没有数据。 确认您正在对正确的条目进行索引 Worksheets — 一个工作簿可能包含多个工作表,目标数据可能不在 Worksheets[0].

常见问题

加载工作簿是否需要原始文件仍然存在于磁盘上?

是的 — Workbook 会从您提供的文件路径读取。请在加载期间保持源文件可访问。

加载后我可以修改单元格并将更改保存回去吗?

是的 — Cells().Set 在已加载的工作簿上工作方式与在新建工作簿上一样;再次调用 Save 以写入您的更改。

有没有办法避免将整个文件加载到内存中?

是的 — 对于只需要顺序读取行而不是加载整个工作簿的大文件,请使用 StreamingReader.ProcessRows。

另请参阅

 中文