1. 产品
  2.   电子表格
  3.   GO
  4.   Go-Excel
 
  

用于读取 Excel XLSX 文件的开源 Go 库

通过 Open Source Go API 阅读 XLSX 文档。

Go-Excel 是一个开源的轻量级纯 Go 库,用于读取 Microsoft Excel 文档。该 API 旨在提供一种简单易用的方法来将 XLSX 文件读取为类似相关数据库的表。在读取 XLSX 文件时,API 期望第一行作为标题行,将行作为数据行。

API 提供了一组标签来操作 Excel 文档。 column标签映射到标题行中的字段名,default标签在没有定义值时设置默认值,split标签将字符串拆分并转换为切片,nil标签跳过cell中的scan值和req如果 Excel 中不存在列标题,则标记返回错误。

Previous Next

Go-Excel 入门

将 Go-Excel 安装到项目中的推荐方法是使用 GitHub。请使用以下命令进行顺利安装。

通过 GitHub 安装 go-excel

go get github.com/szyhf/go-excel 

通过 Free Go API 读取 Excel 文件

开源库 Go-Excel 允许计算机程序员通过 GO 读取 Excel 文件。在读取 excel 文件时,可以使用字段名作为默认列名,并且可以将一列映射到多个字段。设置读取选项后,您使用 excel.NewConnector() 方法打开与 Excel 文件的新连接并成功,连接到 excel 文件后,您可以使用 conn.NewReader() 方法读取其内容。

简易阅读器读取应用程序中的Excel文件

type Reader interface {
	// Get all titles sorted
	GetTitles() []string
	// Read current row into a object
	Read(v interface{}) error
	// Read all rows
	// container: container should be ptr to slice or array.
	ReadAll(container interface{}) error
	// Read next rows
	Next() bool
	// Close the reader
	Close() error
}

通过 GO API 读取 Excel 的高级方法

开源 API Go-Excel 提供了读取 excel 文件的基本和高级方法。您可以使用索引行作为标题,标题行之前的每一行都将被忽略,默认标题行设置为 0。您可以跳过空行,跳过大于标题的列。 API 允许使用默认值设置空单元格,您可以通过 encoding.BinaryUnmarshaler 使用 unmarshal 设置默认值

通过免费GAPI读取地图

conn := excel.NewConnecter()
err := conn.Open(filePath)
if err != nil {
	fmt.Println(err)
	return
}
defer conn.Close()
// Generate an new reader of a sheet
// sheetNamer: if sheetNamer is string, will use sheet as sheet name.
//             if sheetNamer is int, will i'th sheet in the workbook, be careful the hidden sheet is counted. i ∈ [1,+inf]
//             if sheetNamer is a object implements `GetXLSXSheetName()string`, the return value will be used.
//             otherwise, will use sheetNamer as struct and reflect for it's name.
// 			   if sheetNamer is a slice, the type of element will be used to infer like before.
rd, err := conn.NewReader(stdSheetName)
if err != nil {
	fmt.Println(err)
	return
}
defer rd.Close()
idx := 0
for rd.Next() {
	var m map[string]string
	if err := rd.Read(&m); err != nil {
		fmt.Println(err)
		return
	}
	expectStdMap := expectStandardMapList[idx]
	if !reflect.DeepEqual(m, expectStdMap) {
		fmt.Printf("unexpect std at %d = \n%s", idx, convert.MustJsonPrettyString(expectStdMap))
	}
	fmt.Printf("%d => %s\n", idx, convert.MustJsonString(m))
	idx++
}
 中国人