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归因许可许可。
