Go 用于处理 Excel XLSX 文档的库

支持 Microsoft Excel XLSX 电子表格生成、管理工作表、通过 Go API 处理工作表中的行和列的开源 Go API。

xlsx 库为使用 Go 处理 Microsoft Excel 文件提供了一种非常快速且可靠的方法。该库有助于简化 Excel XLSX 文件格式的读写。 XLSX 文件格式于 2007 年推出,并使用 Microsoft 早在 2000 年采用的 Open XML 标准。该库是开源的,可在 BSD-3-Clause 许可下使用。

开源 xlsx 库支持与 Microsoft Excel 文档创建和操作相关的几个重要功能,例如创建新 XlSX 文件、打开现有 Excel 文件、访问工作表、添加新工作表、管理工作表中的行和列、添加单元格,从一行中获取单元格,格式化单元格,将样式应用于单元格,命名范围支持等等。

Previous Next

Xlsx2Go 入门

推荐安装xlsx的方式来自GitHub,请使用以下命令顺利安装。

通过 GitHub 安装 xlsx

go get https://github.com/tealeg/xlsx.git

通过 Go 库创建新的 XLSX 文件

开源 xlsx 库使软件开发人员能够使用几个 Go 命令从头开始创建一个新的空 XLSX 文件。开发人员可以使用新的 NewFile() 函数来生成新文件。创建完成后,您可以轻松地将新内容添加到工作簿。您可以轻松添加新工作表或附加现有工作表。一旦创建并完成工作,请保存您的工作,建议关闭()工作表。

通过走API创建和编辑Excel LS文件

// Demonstrates how to create/open/save XLSX files
func Example_files() {
	// Create a new XLSX file
	xl := xlsx.New()
	// Open the XLSX file using file name
	xl, err := xlsx.Open("./test_files/example_simple.xlsx")
	if err != nil {
		log.Fatal(err)
	}
	defer xl.Close()
	// Open the XLSX file using file handler
	zipFile, err := os.Open("./test_files/example_simple.xlsx")
	if err != nil {
		log.Fatal(err)
	}
	xl, err = xlsx.Open(zipFile)
	if err != nil {
		log.Fatal(err)
	}
	// Update the existing XLSX file
	err = xl.Save()
	if err != nil {
		log.Fatal(err)
	}
	// Save the XLSX file under different name
	err = xl.SaveAs("new_file.xlsx")
	if err != nil {
		log.Fatal(err)
	}
}

访问和读取 XLSX 文件

开源 xlsx 库提供了一组函数,允许开发人员在自己的 Go 应用程序中打开和读取现有的 XLSX 电子表格文件。您还可以通过几个 Go 命令轻松访问工作簿的工作表。开发人员还可以轻松访问他们选择的特定工作表。

通过图书馆查阅Excel文件

func Example_access() {
	xl, err := xlsx.Open("./test_files/example_simple.xlsx")
	if err != nil {
		log.Fatal(err)
	}
	defer xl.Close()
	// Get sheet by 0-based index
	sheet := xl.Sheet(0)
	// Get cell by 0-based indexes
	cell := sheet.Cell(13, 27)
	fmt.Println(cell.Value())
	// Get cell by reference
	cell = sheet.CellByRef("N28")
	fmt.Println(cell.Value())
	// Get row by 0-based index
	row := sheet.Row(9)
	fmt.Println(strings.Join(row.Values(), ","))
	// Get cell of row at 0-based col index
	cell = row.Cell(0)
	fmt.Println(cell.Value())
	// Get col by 0-based index
	col := sheet.Col(3)
	fmt.Println(strings.Join(col.Values(), ","))
	// Get cell of col at 0-based row index
	cell = col.Cell(0)
	fmt.Println(cell.Value())
	// Get range by references
	area := sheet.RangeByRef("D10:H13")
	fmt.Println(strings.Join(area.Values(), ","))
}

处理工作表中的行和列

单元格是 Excel 工作表的支柱。工作表由按行和列组织的单元格组成。 xlsx 库为软件开发人员提供了广泛的功能,用于使用 Go 命令在其应用程序中处理行和列。它支持添加新行和列、迭代行和列、删除不需要的行和列、向行添加新单元格、从单元格中获取值、将格式应用于一系列单元格等等。

通过图书馆在Excel工作表中插入列和Ross

func Example_insert() {
	xl, err := xlsx.Open("./test_files/example_simple.xlsx")
	if err != nil {
		log.Fatal(err)
	}
	defer xl.Close()
	sheet := xl.Sheet(0)
	fmt.Println(sheet.Dimension())
	fmt.Println(strings.Join(sheet.Col(3).Values(), ","))
	// Insert a new col
	sheet.InsertCol(3)
	fmt.Println(sheet.Dimension())
	fmt.Println(strings.Join(sheet.Col(3).Values(), ","))
	fmt.Println(strings.Join(sheet.Col(4).Values(), ","))
	// Insert a new row
	fmt.Println(strings.Join(sheet.Row(9).Values(), ","))
	sheet.InsertRow(3)
	fmt.Println(sheet.Dimension())
	fmt.Println(strings.Join(sheet.Row(9).Values(), ","))
	fmt.Println(strings.Join(sheet.Row(10).Values(), ","))
}

应用样式和格式

免费库 xlsx 库提供了几个重要功能,使软件开发人员能够轻松地将格式和样式应用于他们的电子表格。样式提供单元格的布局和装饰,如字体、颜色、内容对齐、字体大小、填充等。您只需几行代码即可轻松地将样式应用于一系列单元格。您只需要创建一次样式并在需要时重复使用它。您还可以为单元格应用数字和日期格式。

通过走向图书馆应用Styles和Excel文件

gfunc Example_formatting() {
	xl, err := xlsx.Open("./test_files/example_simple.xlsx")
	if err != nil {
		log.Fatal(err)
	}
	defer xl.Close()
	// Create a new format for a bold font with red color and yellow solid background
	redBold := styles.New(
		styles.Font.Bold,
		styles.Font.Color("#ff0000"),
		styles.Fill.Background("#ffff00"),
		styles.Fill.Type(styles.PatternTypeSolid),
	)
	// Add formatting to xlsx
	styleID := xl.AddStyles(redBold)
	sheet := xl.Sheet(0)
	// Set formatting for cell
	sheet.CellByRef("N28").SetStyles(styleID)
	// Set DEFAULT formatting for row. Affects cells not yet allocated in the row.
	// In other words, this style applies to new cells.
	sheet.Row(9).SetStyles(styleID)
	// Set DEFAULT formatting for col. Affects cells not yet allocated in the col.
	// In other words, this style applies to new cells.
	sheet.Col(3).SetStyles(styleID)
	//set formatting for all cells in range
	sheet.RangeByRef("D10:H13").SetStyles(styleID)
}
 中国人