Go + Excel 学习 Excelize
Excelize
簡介
Excelize 是 Go 語言編寫的用于操作 Office Excel 文檔類庫,基于 ECMA-376 Office OpenXML 標準。可以使用它來讀取、寫入由 Microsoft Excel? 2007 及以上版本創(chuàng)建的 XLSX 文檔。相比較其他的開源類庫,Excelize 支持寫入原本帶有圖片(表)、透視表和切片器等復雜樣式的文檔,還支持向 Excel 文檔中插入圖片與圖表,并且在保存后不會丟失文檔原有樣式,可以應(yīng)用于各類報表系統(tǒng)中。使用本類庫要求使用的 Go 語言為 1.10 或更高版本,完整的 API 使用文檔請訪問 godoc.org 或查看 參考文檔。
快速上手
安裝
go get github.com/360EntSecGroup-Skylar/excelize創(chuàng)建 Excel 文檔
下面是一個創(chuàng)建 Excel 文檔的簡單例子:
package mainimport ("fmt""github.com/360EntSecGroup-Skylar/excelize" )func main() {f := excelize.NewFile()// 創(chuàng)建一個工作表index := f.NewSheet("Sheet2")// 設(shè)置單元格的值f.SetCellValue("Sheet2", "A2", "Hello world.")f.SetCellValue("Sheet1", "B2", 100)// 設(shè)置工作簿的默認工作表f.SetActiveSheet(index)// 根據(jù)指定路徑保存文件err := f.SaveAs("./Book1.xlsx")if err != nil {fmt.Println(err)} }讀取 Excel 文檔
下面是讀取 Excel 文檔的例子:
package mainimport ("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()} }在 Excel 文檔中創(chuàng)建圖表
使用 Excelize 生成圖表十分簡單,僅需幾行代碼。您可以根據(jù)工作表中的已有數(shù)據(jù)構(gòu)建圖表,或向工作表中添加數(shù)據(jù)并創(chuàng)建圖表。
package mainimport ("fmt""github.com/360EntSecGroup-Skylar/excelize" )func main() {categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}f := excelize.NewFile()for k, v := range categories {f.SetCellValue("Sheet1", k, v)}for k, v := range values {f.SetCellValue("Sheet1", k, v)}err := f.AddChart("Sheet1", "E1", `{"type":"col3DClustered","series":[{"name":"Sheet1!$A$2","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$2:$D$2"},{"name":"Sheet1!$A$3","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$3:$D$3"},{"name":"Sheet1!$A$4","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$4:$D$4"}],"title":{"name":"Fruit 3D Clustered Column Chart"}}`)if err != nil {fmt.Println(err)return}// 根據(jù)指定路徑保存文件err = f.SaveAs("./Book1.xlsx")if err != nil {fmt.Println(err)} }向 Excel 文檔中插入圖片
package mainimport ("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)}// 在工作表中插入圖片,并設(shè)置圖片的縮放比例err = f.AddPicture("Sheet1", "D2", "./image2.jpg", `{"x_scale": 0.5, "y_scale": 0.5}`)if err != nil {fmt.Println(err)}// 在工作表中插入圖片,并設(shè)置圖片的打印屬性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)} }社區(qū)合作
歡迎您為此項目貢獻代碼,提出建議或問題、修復 Bug 以及參與討論對新功能的想法。 XML 符合標準: part 1 of the 5th edition of the ECMA-376 Standard for Office Open XML。
開源許可
本項目遵循 BSD 3-Clause 開源許可協(xié)議,訪問 https://opensource.org/licenses/BSD-3-Clause 查看許可協(xié)議文件。
Excel 徽標是 Microsoft Corporation 的商標,項目的圖片是一種改編。
本類庫中部分 XML 結(jié)構(gòu)體的定義參考了開源項目:tealeg/xlsx,遵循 BSD 3-Clause License 開源許可協(xié)議。
gopher.{ai,svg,png} 由 Takuya Ueda 創(chuàng)作,遵循 Creative Commons 3.0 Attributions license 創(chuàng)作共用授權(quán)條款。
總結(jié)
以上是生活随笔為你收集整理的Go + Excel 学习 Excelize的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOs7 卸载 MySql + 通
- 下一篇: Go + Excel 学习 Exceli