Excelize库
Excelize是一个纯Go语言编写的库,提供了一系列功能,使得用户能够写入和读取XLAM / XLSM / XLSX / XLTM / XLTX文件格式。它支持2007年及以后版本的Microsoft Excel™生成的电子表格文档,兼容性高,并且提供了用于处理带有大量数据工作表的流式API。
使用 Excelize导出
Excelize 是一个强大的库,支持复杂的Excel操作,包括样式、图片等。首先,确保你已经安装了Excelize库
go get github.com/xuri/excelize/v2
package main
import (
"fmt"
excelize "github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
// 创建一个新的工作表
f.NewSheet("Sheet1")
// 设置单元格的值
f.SetCellValue("Sheet1", "A1", "Hello")
f.SetCellValue("Sheet1", "B1", "World")
if err := f.SaveAs("C:\\Users\\123\\Desktop\\output.xlsx"); err != nil {
fmt.Println(err)
}
// 保存文件
if err := f.SaveAs("output.xlsx"); err != nil {
fmt.Println(err)
}
}
package main
import (
"fmt"
excelize "github.com/xuri/excelize/v2"
)
func main() {
// 创建文件
f := excelize.NewFile()
defer func() {
// 关闭文件
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// 添加新的工作表
index, err := f.NewSheet("Sheet2")
if err != nil {
fmt.Println(err)
return
}
// 在单元格中设置值
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// 设置活动的工作表
f.SetActiveSheet(index)
// 按指定路径保存文件
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
使用 Excelize读取
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("output.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
// 关闭文件.
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// 读取指定列
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// 读取所有行
rows, err := f.GetRows("Sheet1")
if err != nil {
fmt.Println(err)
return
}
for _, row := range rows {
for _, colCell := range row {
fmt.Print(colCell, "\t")
}
fmt.Println()
}
}
其他Excel导出包
对于简单的Excel导出需求,github.com/tealeg/xlsx
也是一个不错的选择
go get github.com/tealeg/xlsx
package main
import (
"fmt"
"github.com/tealeg/xlsx"
)
func main() {
// 创建一个新的文件
file := xlsx.NewFile()
sheet, _ := file.AddSheet("Sheet1")
// 创建一行并设置单元格的值
row := sheet.AddRow()
cell := row.AddCell()
cell.Value = "Hello"
cell = row.AddCell()
cell.Value = "World"
// 保存文件
err := file.Save("output.xlsx")
if err != nil {
fmt.Println(err)
}
}