是 Go 語言編寫的一個用來操作 Office Excel 文檔類庫,基於 ECMA-376 Office OpenXML 標準。可以使用它來讀取、寫入 XLSX 文件。相比較其他的開源類庫,Excelize 支持寫入原本帶有圖片(表)的文檔,還支持向 Excel 中插入圖片,並且在保存後不會丟失圖表樣式,可以應用在各種報表系統中。
兼容性提示
升級至該版本需要您的 Go 語言版本高於 1.10。
新增功能
問題修復
性能表現
其他
使用 Excelize 要求使用的 Go 語言為 1.10 或更高版本。
go get github.com/360EntSecGroup-Skylar/excelize
go get -u github.com/360EntSecGroup-Skylar/excelize
下面是一個創建 Excel 文檔的簡單例子:
package main
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize"
)
func main() {
f := excelize.NewFile()
// 創建一個工作表
index := f.NewSheet("Sheet2")
// 設置單元格的值
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// 設置工作簿的默認工作表
f.SetActiveSheet(index)
// 根據指定路徑保存文件
err := f.SaveAs("./Book1.xlsx")
if err != nil {
fmt.Println(err)
}
}
下面是讀取 Excel 文檔的例子:
package main
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize"
)
func main() {
f, err := excelize.OpenFile("./Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
// 獲取工作表中指定單元格的值
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// 獲取 Sheet1 上所有單元格
rows, err := f.GetRows("Sheet1")
for _, row := range rows {
for _, colCell := range row {
fmt.Print(colCell, "\\t")
}
fmt.Println()
}
}
使用 Excelize 生成圖表十分簡單,僅需幾行代碼。您可以根據工作表中的已有數據構建圖表,或向工作表中添加數據並創建圖表。
package main
import (
"fmt"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"github.com/360EntSecGroup-Skylar/excelize"
)
func main() {
f, err := excelize.OpenFile("./Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
// 插入圖片
err = f.AddPicture("Sheet1", "A2", "./image1.png", "")
if err != nil {
fmt.Println(err)
}
// 在工作表中插入圖片,並設置圖片的縮放比例
err = f.AddPicture("Sheet1", "D2", "./image2.jpg", `{"x_scale": 0.5, "y_scale": 0.5}`)
if err != nil {
fmt.Println(err)
}
// 在工作表中插入圖片,並設置圖片的列印屬性
err = f.AddPicture("Sheet1", "H2", "./image3.gif", `{"x_offset": 15, "y_offset": 10, "print_obj": true, "lock_aspect_ratio": false, "locked": false}`)
if err != nil {
fmt.Println(err)
}
// 保存文件
err = f.Save()
if err != nil {
fmt.Println(err)
}
}
更多使用方法可以查看官方文檔
https://gitee.com/xurime/excelize
更多更優質的資訊,請關注我,你的支持會鼓勵我不斷分享更多更好的優質文章。