excel

package
v1.54.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 17, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package excel 提供基于模板的 Excel 导入导出:泛型列表导出/导入, 依赖用户预调好的 .xlsx 模板文件(样式/格式/公式),数据区域按行填充。 映射规则:struct tag `excel:"列名"` 匹配模板表头;无 tag 时用字段名匹配。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Export

func Export[T any](tpl Template, data []T, writer io.Writer) error

Export 将泛型数据列表按模板填充到 writer(返回 .xlsx 字节流)。 模板的数据区域从 DataStartRow 开始,每行对应 data 的一项,列序按模板表头匹配。

func ExportBatch added in v1.54.0

func ExportBatch[T any](tpl Template, data []T, outputPath string, batch BatchConfig) error

ExportBatch 分批写入大量数据,降低内存峰值。 每批写入 BatchSize 行后调 f.Save() 刷盘;OnProgress 回调进度。 适用于万行以上导出场景(HTTP 请求异步生成文件,前端轮询进度)。

func ExportBatchToWriter added in v1.54.0

func ExportBatchToWriter[T any](tpl Template, data []T, writer io.Writer, batch BatchConfig) error

ExportBatchToWriter 分批写入到 io.Writer(流式 HTTP 下载场景)。 与 ExportBatch 类似,但输出到 Writer 而非文件。

func ExportMultiSheet added in v1.54.0

func ExportMultiSheet[T any](sheets []SheetData[T], outputPath string) error

ExportMultiSheet 将多个 sheet 的数据一次性导出到同一 Excel 文件。 每个 sheet 使用各自的模板配置(可为不同模板文件或同一文件不同 sheet)。

func ExportToFile

func ExportToFile[T any](tpl Template, data []T, outputPath string) error

ExportToFile 将泛型数据列表按模板填充到输出文件。

func Import

func Import[T any](tpl Template, reader io.Reader) ([]T, error)

Import 从 reader 读取 Excel,按模板表头映射解析为泛型列表。

func ImportFromFile

func ImportFromFile[T any](tpl Template, inputPath string) ([]T, error)

ImportFromFile 从 Excel 文件按模板表头映射解析为泛型列表。

Types

type BatchConfig added in v1.54.0

type BatchConfig struct {
	// BatchSize 每批写入行数(默认 1000);0 表示不分批。
	BatchSize int
	// OnProgress 进度回调(已写入行数,总行数),nil 不回调。
	OnProgress func(written, total int)
}

BatchConfig 分批写入配置。

type RowError added in v1.54.0

type RowError struct {
	Row   int    // Excel 行号(1-based)
	Error string // 错误描述
}

RowError 导入时的行级错误(行号 + 错误描述)。

func ImportWithErrors added in v1.54.0

func ImportWithErrors[T any](tpl Template, inputPath string) (rows []T, errors []RowError)

ImportWithErrors 导入 Excel 并返回行级错误列表(校验失败/类型转换失败)。 空行(全字段空白)自动跳过;errors 包含行号与错误描述。 业务可根据 errors 决定是否继续处理 rows(部分成功)或整体拒绝。

type SheetData added in v1.54.0

type SheetData[T any] struct {
	// SheetName 工作表名(默认 "Sheet1")。
	SheetName string
	// Template 该 sheet 的模板配置。
	Template Template
	// Data 该 sheet 的数据列表。
	Data []T
}

SheetData 单个 sheet 的数据集(多 sheet 导出场景)。

type Template

type Template struct {
	// FilePath 模板文件路径(导出时打开;导入时作为表头参考)。
	FilePath string
	// SheetName 工作表名(默认 "Sheet1")。
	SheetName string
	// HeaderRow 表头行号(1-based,默认 1)。
	HeaderRow int
	// DataStartRow 数据起始行号(1-based,默认 2)。
	DataStartRow int
}

Template 模板配置:用户提供的 .xlsx 文件(已调好样式/格式),gbx 填充数据区域。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL