图表

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

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

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

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

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

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

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

    其中参数 show_legend_key 默认值为 false

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

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

    参数 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 参数设置坐标轴选项。下面是该参数的可选值:

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

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

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

    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. }

    二维堆积面积图

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

    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. }

    三维堆积面积图

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

    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. values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
    8. xlsx := excelize.NewFile()
    9. for k, v := range categories {
    10. xlsx.SetCellValue("Sheet1", k, v)
    11. }
    12. for k, v := range values {
    13. xlsx.SetCellValue("Sheet1", k, v)
    14. }
    15. 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"}`)
    16. if err != nil {
    17. fmt.Println(err)
    18. }
    19. // 保存工作簿
    20. err = xlsx.SaveAs("./Book1.xlsx")
    21. if err != nil {
    22. fmt.Println(err)
    23. }
    24. }

    二维簇状条形图

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

    二维堆积条形图

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

    "使用 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. }

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

    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. }

    三维堆积条形图

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

    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. }

    三维百分比堆积条形图

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

    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. }
    12. for k, v := range values {
    13. xlsx.SetCellValue("Sheet1", k, v)
    14. 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"}`)
    15. if err != nil {
    16. fmt.Println(err)
    17. }
    18. // 保存工作簿
    19. err = xlsx.SaveAs("./Book1.xlsx")
    20. if err != nil {
    21. fmt.Println(err)
    22. }
    23. }

    二维簇状柱形图

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

    "使用 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. }

    折线图

    饼图

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

    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. }

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

    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. }