excelize
介绍
excelize是用Pure Go编写的库,提供了一组功能,可允许您从XLAM / XLSM / XLSX / XLTM / XLTX文件写入和阅读。支持Microsoft Excel™2007及以后生成的读取和写作电子表格文档。通过高兼容性支持复杂的组件,并提供了流媒体API,以生成或读取具有大量数据的工作表的数据。该库需要Go版本1.23.0或更高版本。可以使用GO的内置文档工具或在go.dev和文档参考上在线查看完整文档。
基本用法
安装
go get github.com/xuri/ excelize- 如果使用GO模块对软件包进行管理,请使用以下命令安装。
go get github.com/xuri/ excelize /v2创建电子表格
这是将创建电子表格文件的最小示例用法。
excelize/v2"
)
func main() {
f := excelize .NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Create a new sheet.
index, err := f.NewSheet("Sheet2")
if err != nil {
fmt.Println(err)
return
}
// Set value of a cell.
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// Set active sheet of the workbook.
f.SetActiveSheet(index)
// Save spreadsheet by the given path.
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}">
package main import ( "fmt" "github.com/xuri/ excelize /v2" ) func main () { f := excelize . NewFile () defer func () { if err := f . Close (); err != nil { fmt . Println ( err ) } }() // Create a new sheet. index , err := f . NewSheet ( "Sheet2" ) if err != nil { fmt . Println ( err ) return } // Set value of a cell. f . SetCellValue ( "Sheet2" , "A2" , "Hello world." ) f . SetCellValue ( "Sheet1" , "B2" , 100 ) // Set active sheet of the workbook. f . SetActiveSheet ( index ) // Save spreadsheet by the given path. if err := f . SaveAs ( "Book1.xlsx" ); err != nil { fmt . Println ( err ) } }
阅读电子表格
以下构成裸露的电子表格文档。
excelize/v2"
)
func main() {
f, err := excelize .OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
// Close the spreadsheet.
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Get value from cell by given worksheet name and cell reference.
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// Get all the rows in the Sheet1.
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()
}
}">
package main import ( "fmt" "github.com/xuri/ excelize /v2" ) func main () { f , err := excelize . OpenFile ( "Book1.xlsx" ) if err != nil { fmt . Println ( err ) return } defer func () { // Close the spreadsheet. if err := f . Close (); err != nil { fmt . Println ( err ) } }() // Get value from cell by given worksheet name and cell reference. cell , err := f . GetCellValue ( "Sheet1" , "B2" ) if err != nil { fmt . Println ( err ) return } fmt . Println ( cell ) // Get all the rows in the Sheet1. 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 () } }
将图表添加到电子表格文件
随着图表生成和管理的excelize ,就像几行代码一样容易。您可以根据工作表中的数据构建图表,也可以在工作表中没有任何数据生成图表。
excelize/v2"
)
func main() {
f := excelize .NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
for idx, row := range [][]interface{}{
{nil, "Apple", "Orange", "Pear"}, {"Small", 2, 3, 3},
{"Normal", 5, 2, 4}, {"Large", 6, 7, 8},
} {
cell, err := excelize .CoordinatesToCellName(1, idx+1)
if err != nil {
fmt.Println(err)
return
}
f.SetSheetRow("Sheet1", cell, &row)
}
if err := f.AddChart("Sheet1", "E1", & excelize .Chart{
Type: excelize .Col3DClustered,
Series: [] excelize .ChartSeries{
{
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: [] excelize .RichTextRun{
{
Text: "Fruit 3D Clustered Column Chart",
},
},
}); err != nil {
fmt.Println(err)
return
}
// Save spreadsheet by the given path.
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}">
package main import ( "fmt" "github.com/xuri/ excelize /v2" ) func main () { f := excelize . NewFile () defer func () { if err := f . Close (); err != nil { fmt . Println ( err ) } }() for idx , row := range [][] interface {}{ { nil , "Apple" , "Orange" , "Pear" }, { "Small" , 2 , 3 , 3 }, { "Normal" , 5 , 2 , 4 }, { "Large" , 6 , 7 , 8 }, } { cell , err := excelize . CoordinatesToCellName ( 1 , idx + 1 ) if err != nil { fmt . Println ( err ) return } f . SetSheetRow ( "Sheet1" , cell , & row ) } if err := f . AddChart ( "Sheet1" , "E1" , & excelize . Chart { Type : excelize . Col3DClustered , Series : [] excelize . ChartSeries { { 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 : [] excelize . RichTextRun { { Text : "Fruit 3D Clustered Column Chart" , }, }, }); err != nil { fmt . Println ( err ) return } // Save spreadsheet by the given path. if err := f . SaveAs ( "Book1.xlsx" ); err != nil { fmt . Println ( err ) } }
将图片添加到电子表格文件中
excelize/v2"
)
func main() {
f, err := excelize .OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
// Close the spreadsheet.
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Insert a picture.
if err := f.AddPicture("Sheet1", "A2", "image.png", nil); err != nil {
fmt.Println(err)
}
// Insert a picture to worksheet with scaling.
if err := f.AddPicture("Sheet1", "D2", "image.jpg",
& excelize .GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
fmt.Println(err)
}
// Insert a picture offset in the cell with printing support.
enable, disable := true, false
if err := f.AddPicture("Sheet1", "H2", "image.gif",
& excelize .GraphicOptions{
PrintObject: &enable,
LockAspectRatio: false,
OffsetX: 15,
OffsetY: 10,
Locked: &disable,
}); err != nil {
fmt.Println(err)
}
// Save the spreadsheet with the origin path.
if err = f.Save(); err != nil {
fmt.Println(err)
}
}">
package main import ( "fmt" _ "image/gif" _ "image/jpeg" _ "image/png" "github.com/xuri/ excelize /v2" ) func main () { f , err := excelize . OpenFile ( "Book1.xlsx" ) if err != nil { fmt . Println ( err ) return } defer func () { // Close the spreadsheet. if err := f . Close (); err != nil { fmt . Println ( err ) } }() // Insert a picture. if err := f . AddPicture ( "Sheet1" , "A2" , "image.png" , nil ); err != nil { fmt . Println ( err ) } // Insert a picture to worksheet with scaling. if err := f . AddPicture ( "Sheet1" , "D2" , "image.jpg" , & excelize . GraphicOptions { ScaleX : 0.5 , ScaleY : 0.5 }); err != nil { fmt . Println ( err ) } // Insert a picture offset in the cell with printing support. enable , disable := true , false if err := f . AddPicture ( "Sheet1" , "H2" , "image.gif" , & excelize . GraphicOptions { PrintObject : & enable , LockAspectRatio : false , OffsetX : 15 , OffsetY : 10 , Locked : & disable , }); err != nil { fmt . Println ( err ) } // Save the spreadsheet with the origin path. if err = f . Save (); err != nil { fmt . Println ( err ) } }
贡献
欢迎捐款!打开拉动请求以修复错误,或打开问题以讨论新功能或更改。 XML符合ECMA-376 Office Open XML标准的第5版的第1部分。
许可证
该计划符合BSD 3范围许可证的条款。请参阅https://ope**n*source.org/licenses/bsd-3-clause。
Excel徽标是Microsoft Corporation的商标。这艺术品是一种改编。
Gopher。{ai,svg,png}由takuya ueda创建。根据创意共享3.0归因许可许可。
下载源码
通过命令行克隆项目:
git clone https://github.com/qax-os/excelize.git