图表

添加图表

  1. func (f *File) AddChart(sheet, cell, format string) error

根据给定的工作表名称、单元格坐标和图表样式属性插入图表。

下面是 Excelize 支持创建的图表类型 type

名称 图表类型
area 二维面积图
areaStacked 二维堆积面积图
areaPercentStacked 二维百分比堆积面积图
area3D 三维面积图
area3DStacked 三维堆积面积图
area3DPercentStacked 三维百分比堆积面积图
bar 二维簇状条形图
barStacked 二维堆积条形图
barPercentStacked 二维百分比堆积条形图
bar3DClustered 三维簇状条形图
bar3DStacked 三维堆积条形图
bar3DPercentStacked 三维百分比堆积条形图
col 二维簇状柱形图
colStacked 二维堆积柱形图
colPercentStacked 二维百分比堆积柱形图
col3DClustered 三维簇状柱形图
col3D 三维柱形图
col3DStacked 三维堆积柱形图
col3DPercentStacked 三维百分比堆积柱形图
doughnut 圆环图
line 折线图
pie 饼图
pie3D 三维饼图
radar 雷达图
scatter 散点图

在 Office Excel 中图表数据区域 series 指定了绘制哪些数据的信息集合、图例项(系列)和水平(分类)轴标签。

下面是 Excelize 中 series 的可选参数:

参数 含义
name 图例项(系列),在图表图例和公式栏中显示。name 参数是可选的,如果不指定该值默认将会使用 Series 1 .. n 表示。name 支持使用公式表示,例如:Sheet1!$A$1
categories 水平(分类)轴标签。在大多数图表类型中,categories 属性是可选的,默认为形如 1..n 的连续序列。
values 图表数据区域,是 series 中最重要的参数,也是创建图表时唯一的必选参数。该选项将图表与其显示的工作表数据链接起来。

参数 legend 提供对图例项的属性设置方法,下面是 Excelize 中 legend 的可选参数:

参数 类型 含义
position string 图例位置
show_legend_key bool 显示图例,但不与图表重叠

其中参数 position 默认值为 right,下面是可选值:

可选值 含义
top 靠上
bottom 靠下
left 靠左
right 靠右
top_right 右上

其中参数 show_legend_key 默认值为 false

通过可选 title 对象的 name 参数设置图表标题,标题将会在图表上方显示。参数 name 支持使用公式表示,例如 Sheet1!$A$1,如果不指定图标标题默认值为空。

参数 show_blanks_as 提供“隐藏和清空单元格”设置,默认值为: gap 即“空单元格显示为”:“空距”。下面是该参数的可选值:

含义
gap 空距
span 用直线连接数据点
zero 零值

参数 format 提供对图表偏移、缩放、高宽比设置和打印属性等参数的设置,其参数与在 AddPicture() 函数中所使用的相同。

通过可选 plotarea 对象设置数据标签格式,可选参数如下:

参数 类型 默认值 含义
show_bubble_size bool false 气泡大小
show_cat_name bool true 类别名称
show_leader_lines bool false 显示引导线
show_percent bool false 百分比
show_series_name bool false 系列名称
show_val bool false

通过参数 x_axisy_axis 参数设置坐标轴选项。下面是该参数的可选值:

参数 类型 默认值 含义
reverse_order bool false 逆序刻度值
maximum int 0 最大值,0 代表自动
minimum int 0 最小值,0 代表自动

通过可选 dimension 对象设置图表的大小,可选参数如下:

参数 类型 默认值 含义
height int 290 高度
width int 480 宽度

二维面积图

例如,创建如下效果的二维面积图:

"使用 Go 语言在 Excel 文档中创建二维面积图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 7, "C2": 7, "D2": 8, "B3": 5, "C3": 4, "D3": 4, "B4": 2, "C4": 3, "D4": 3}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"area","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"bottom","show_legend_key":false},"title":{"name":"Fruit 2D Area Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

二维堆积面积图

例如,创建如下效果的二维堆积面积图:

"使用 Go 语言在 Excel 文档中创建二维堆积面积图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"areaStacked","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"bottom","show_legend_key":false},"title":{"name":"Fruit 2D Stacked Area Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

二维百分比堆积面积图

三维面积图

例如,创建如下效果的三维面积图:

"使用 Go 语言在 Excel 文档中创建三维面积图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 7, "C2": 7, "D2": 8, "B3": 5, "C3": 4, "D3": 4, "B4": 2, "C4": 3, "D4": 3}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"area3D","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"bottom","show_legend_key":false},"title":{"name":"Fruit 3D Area Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

三维堆积面积图

例如,创建如下效果的三维堆积面积图:

"使用 Go 语言在 Excel 文档中创建三维堆积面积图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"area3DStacked","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"bottom","show_legend_key":false},"title":{"name":"Fruit 3D Stacked Area Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

三维百分比堆积面积图

例如,创建如下效果的三维百分比堆积面积图:

"使用 Go 语言在 Excel 文档中创建三维百分比堆积面积图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"area3DPercentStacked","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"bottom","show_legend_key":false},"title":{"name":"Fruit 3D 100% Stacked Area Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

二维簇状条形图

例如,创建如下效果的二维簇状条形图:

"使用 Go 语言在 Excel 文档中创建二维簇状条形图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"bar","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Fruit 2D Clustered Bar Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

二维堆积条形图

例如,创建如下效果的二维堆积条形图:

"使用 Go 语言在 Excel 文档中创建二维堆积条形图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"barStacked","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Fruit 2D Stacked Bar Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

二维百分比堆积条形图

例如,创建如下效果的二维百分比堆积条形图:

"使用 Go 语言在 Excel 文档中创建二维百分比堆积条形图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"barPercentStacked","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Fruit 2D Stacked 100% Bar Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

三维簇状条形图

例如,创建如下效果的三维簇状条形图:

"使用 Go 语言在 Excel 文档中创建三维簇状条形图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"bar3DClustered","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Fruit 3D Clustered Bar Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

三维堆积条形图

例如,创建如下效果的三维堆积条形图:

"使用 Go 语言在 Excel 文档中创建三维堆积条形图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"bar3DStacked","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Fruit 3D Stacked Bar Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

三维百分比堆积条形图

例如,创建如下效果的三维百分比堆积条形图:

"使用 Go 语言在 Excel 文档中创建三维百分比堆积条形图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"bar3DPercentStacked","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Fruit 3D 100% Stacked Bar Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

二维簇状柱形图

例如,创建如下效果的二维簇状柱形图:

"使用 Go 语言在 Excel 文档中创建二维簇状柱形图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"col","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Fruit 2D Column Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

二维堆积柱形图

二维百分比堆积柱形图

三维簇状柱形图

例如,创建如下效果的三维簇状柱形图:

"使用 Go 语言在 Excel 文档中创建三维簇状柱形图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"bottom","show_legend_key":false},"title":{"name":"Fruit 3D Clustered Column Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero","x_axis":{"reverse_order":true},"y_axis":{"maximum":7.5,"minimum":0.5}}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

三维柱形图

三维堆积柱形图

三维百分比堆积柱形图

圆环图

例如,创建如下效果的圆环图:

"使用 Go 语言在 Excel 文档中创建圆环图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A1": "Apple", "B1": "Orange", "C1": "Pear"}
  8. values := map[string]int{"A2": 2, "B2": 3, "C2": 3}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"doughnut","series":[{"name":"Sheet1!$A$2","categories":"Sheet1!$A$1:$C$1","values":"Sheet1!$A$2:$C$2"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"right","show_legend_key":false},"title":{"name":"Fruit Doughnut Chart"},"plotarea":{"show_bubble_size":false,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":false,"show_val":false},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

折线图

饼图

例如,创建如下效果的饼图:

"使用 Go 语言在 Excel 文档中创建饼图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. xlsx.AddChart("Sheet1", "E1", `{"type":"pie","series":[{"name":"Sheet1!$A$2","categories":"Sheet1!$B$1:$D$1","values":"Sheet1!$B$2:$D$2"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"bottom","show_legend_key":false},"title":{"name":"Fruit Pie Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":false,"show_val":false},"show_blanks_as":"gap"}`)
  17. // 保存工作簿
  18. err := xlsx.SaveAs("./Book1.xlsx")
  19. if err != nil {
  20. fmt.Println(err)
  21. }
  22. }

三维饼图

雷达图

例如,创建如下效果的雷达图:

"使用 Go 语言在 Excel 文档中创建雷达图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"radar","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"top","show_legend_key":false},"title":{"name":"Fruit Radar Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":false,"show_val":false},"show_blanks_as":"span"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

散点图

例如,创建如下效果的散点图:

"使用 Go 语言在 Excel 文档中创建散点图"

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  8. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  9. xlsx := excelize.NewFile()
  10. for k, v := range categories {
  11. xlsx.SetCellValue("Sheet1", k, v)
  12. }
  13. for k, v := range values {
  14. xlsx.SetCellValue("Sheet1", k, v)
  15. }
  16. err := xlsx.AddChart("Sheet1", "E1", `{"type":"scatter","series":[{"name":"Sheet1!$A$2","categories":"","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"}],"format":{"x_scale":1.0,"y_scale":1.0,"x_offset":15,"y_offset":10,"print_obj":true,"lock_aspect_ratio":false,"locked":false},"legend":{"position":"left","show_legend_key":false},"title":{"name":"Fruit Scatter Chart"},"plotarea":{"show_bubble_size":true,"show_cat_name":false,"show_leader_lines":false,"show_percent":true,"show_series_name":true,"show_val":true},"show_blanks_as":"zero"}`)
  17. if err != nil {
  18. fmt.Println(err)
  19. }
  20. // 保存工作簿
  21. err = xlsx.SaveAs("./Book1.xlsx")
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }

原文: https://xuri.me/excelize/zh-hans/chart.html