Go 語言讀寫 Excel
Excelize 是 Go 語言編寫的一個用來操作 Office Excel 文檔類庫,基于 ECMA-376 Office OpenXML 標準。可以使用它來讀取、寫入 XLSX 文件。相比較其他的開源類庫,Excelize 支持寫入原本帶有圖片(表)的文檔,還支持向 Excel 中插入圖片,并且在保存后不會丟失圖表樣式,可以應用在各種報表系統中。
項目主頁 github.com/360EntSecGroup-Skylar/excelize
安裝
go?get?github.com/360EntSecGroup-Skylar/excelize
創建 XLSX
package?main import?( ????"fmt" ????"github.com/360EntSecGroup-Skylar/excelize" ) func?main()?{ ????xlsx?:=?excelize.NewFile() ????//?Create?a?new?sheet. ????index?:=?xlsx.NewSheet("Sheet2") ????//?Set?value?of?a?cell. ????xlsx.SetCellValue("Sheet2",?"A2",?"Hello?world.") ????xlsx.SetCellValue("Sheet1",?"B2",?100) ????//?Set?active?sheet?of?the?workbook. ????xlsx.SetActiveSheet(index) ????//?Save?xlsx?file?by?the?given?path. ????err?:=?xlsx.SaveAs("./Book1.xlsx") ????if?err?!=?nil?{ ????????fmt.Println(err) ????} }
讀寫已有文檔
package?main import?( ????"fmt" ????"github.com/360EntSecGroup-Skylar/excelize" ) func?main()?{ ????xlsx,?err?:=?excelize.OpenFile("./Book1.xlsx") ????if?err?!=?nil?{ ????????fmt.Println(err) ????????return ????} ????//?Get?value?from?cell?by?given?worksheet?name?and?axis. ????cell?:=?xlsx.GetCellValue("Sheet1",?"B2") ????fmt.Println(cell) ????//?Get?all?the?rows?in?the?Sheet1. ????rows?:=?xlsx.GetRows("Sheet1") ????for?_,?row?:=?range?rows?{ ????????for?_,?colCell?:=?range?row?{ ????????????fmt.Print(colCell,?"\t") ????????} ????????fmt.Println() ????} }
向 Excel 中插入圖表
package?main import?( ????"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} ????xlsx?:=?excelize.NewFile() ????for?k,?v?:=?range?categories?{ ????????xlsx.SetCellValue("Sheet1",?k,?v) ????} ????for?k,?v?:=?range?values?{ ????????xlsx.SetCellValue("Sheet1",?k,?v) ????} ????xlsx.AddChart("Sheet1",?"E1",?`{"type":"col3DClustered","series":[{"name":"Sheet1!$A","categories":"Sheet1!$B:$D","values":"Sheet1!$B:$D"},{"name":"Sheet1!$A","categories":"Sheet1!$B:$D","values":"Sheet1!$B:$D"},{"name":"Sheet1!$A","categories":"Sheet1!$B:$D","values":"Sheet1!$B:$D"}],"title":{"name":"Fruit?3D?Clustered?Column?Chart"}}`) ????//?Save?xlsx?file?by?the?given?path. ????err?:=?xlsx.SaveAs("./Book1.xlsx") ????if?err?!=?nil?{ ????????fmt.Println(err) ????} }
向 Excel 中插入圖片
package?main import?( ????"fmt" ????_?"image/gif" ????_?"image/jpeg" ????_?"image/png" ????"github.com/360EntSecGroup-Skylar/excelize" ) func?main()?{ ????xlsx,?err?:=?excelize.OpenFile("./Book1.xlsx") ????if?err?!=?nil?{ ????????fmt.Println(err) ????????return ????} ????//?Insert?a?picture. ????err?=?xlsx.AddPicture("Sheet1",?"A2",?"./image1.png",?"") ????if?err?!=?nil?{ ????????fmt.Println(err) ????} ????//?Insert?a?picture?to?worksheet?with?scaling. ????err?=?xlsx.AddPicture("Sheet1",?"D2",?"./image2.jpg",?`{"x_scale":?0.5,?"y_scale":?0.5}`) ????if?err?!=?nil?{ ????????fmt.Println(err) ????} ????//?Insert?a?picture?offset?in?the?cell?with?printing?support. ????err?=?xlsx.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) ????} ????//?Save?the?xlsx?file?with?the?origin?path. ????err?=?xlsx.Save() ????if?err?!=?nil?{ ????????fmt.Println(err) ????} }
還有其他一些功能,在這里就不一一列舉了,詳細使用文檔以及獲取后期的維護更新可以從項目的主頁獲取
github.com/360EntSecGroup-Skylar/excelize
Go
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。