图表

添加图表

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

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

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

名称图表类型
area二维面积图
areaStacked二维堆积面积图
areaPercentStacked二维百分比堆积面积图
area3D三维面积图
area3DStacked三维堆积面积图
area3DPercentStacked三维百分比堆积面积图
bar二维簇状条形图
barStacked二维堆积条形图
barPercentStacked二维百分比堆积条形图
bar3DClustered三维簇状条形图
bar3DStacked三维堆积条形图
bar3DPercentStacked三维百分比堆积条形图
bar3DConeClustered三维簇状水平圆锥图
bar3DConeStacked三维堆积水平圆锥图
bar3DConePercentStacked三维堆积百分比水平圆锥图
bar3DPyramidClustered三维簇状水平棱锥图
bar3DPyramidStacked三维堆积水平棱锥图
bar3DPyramidPercentStacked三维堆积百分比水平棱锥图
bar3DCylinderClustered三维簇状水平圆柱图
bar3DCylinderStacked三维堆积水平圆柱图
bar3DCylinderPercentStacked三维堆积百分比水平圆柱图
col二维簇状柱形图
colStacked二维堆积柱形图
colPercentStacked二维百分比堆积柱形图
col3D三维柱形图
col3DClustered三维簇状柱形图
col3DStacked三维堆积柱形图
col3DPercentStacked三维百分比堆积柱形图
col3DCone三维圆锥图
col3DConeClustered三维簇状圆锥图
col3DConeStacked三维堆积圆锥图
col3DConePercentStacked三维百分比堆积圆锥图
col3DPyramid三维棱锥图
col3DPyramidClustered三维簇状棱锥图
col3DPyramidStacked三维堆积棱锥图
col3DPyramidPercentStacked三维百分比堆积棱锥图
col3DCylinder三维圆柱图
col3DCylinderClustered三维簇状圆柱图
col3DCylinderStacked三维堆积圆柱图
col3DCylinderPercentStacked三维百分比堆积圆柱图
doughnut圆环图
line折线图
pie饼图
pie3D三维饼图
radar雷达图
scatter散点图
surface3D三维曲面图
wireframeSurface3D三维曲面图(框架图)
contour曲面图
wireframeContour曲面图(俯视框架图)
bubble气泡图
bubble3D三维气泡图

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

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

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

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

参数类型含义
positionstring图例位置
show_legend_keybool显示图例,但不与图表重叠

其中参数 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_sizeboolfalse气泡大小
show_cat_namebooltrue类别名称
show_leader_linesboolfalse显示引导线
show_percentboolfalse百分比
show_series_nameboolfalse系列名称
show_valboolfalse

通过参数 x_axisy_axis 参数设置坐标轴选项。

下面是 x_axis 参数的可选值:

参数类型默认值含义
major_grid_linesboolfalse主要网格线
minor_grid_linesboolfalse次要网格线
tick_label_skipint1指定标签间隔单位
reverse_orderboolfalse逆序刻度值
maximumint0最大值,0 代表自动
minimumint0最小值,0 代表自动

下面是 y_axis 参数的可选值:

参数类型默认值含义
major_grid_linesboolfalse主要网格线
minor_grid_linesboolfalse次要网格线
major_unitfloat640坐标轴主要刻度单位
reverse_orderboolfalse逆序刻度值
maximumint0最大值,0 代表自动
minimumint0最小值,0 代表自动

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

参数类型默认值含义
heightint290高度
widthint480宽度

参数 combo 用来指定创建组合图表,该图表将两个或多个图表类型组合在一个图表中。例如,在 Sheet1!$E$1:$L$15 区域创建一个 簇状柱形图 - 折线图:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize"
  5. )
  6. func main() {
  7. categories := map[string]string{
  8. "A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
  9. values := map[string]int{
  10. "B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
  11. f := excelize.NewFile()
  12. for k, v := range categories {
  13. f.SetCellValue("Sheet1", k, v)
  14. }
  15. for k, v := range values {
  16. f.SetCellValue("Sheet1", k, v)
  17. }
  18. if err := f.AddChart("Sheet1", "E1", `{
  19. "type": "col",
  20. "series": [
  21. {
  22. "name": "Sheet1!$A$2",
  23. "categories": "",
  24. "values": "Sheet1!$B$2:$D$2"
  25. },
  26. {
  27. "name": "Sheet1!$A$3",
  28. "categories": "Sheet1!$B$1:$D$1",
  29. "values": "Sheet1!$B$3:$D$3"
  30. }],
  31. "format":
  32. {
  33. "x_scale": 1.0,
  34. "y_scale": 1.0,
  35. "x_offset": 15,
  36. "y_offset": 10,
  37. "print_obj": true,
  38. "lock_aspect_ratio": false,
  39. "locked": false
  40. },
  41. "legend":
  42. {
  43. "position": "left",
  44. "show_legend_key": false
  45. },
  46. "title":
  47. {
  48. "name": "簇状柱形图 - 折线图"
  49. },
  50. "plotarea":
  51. {
  52. "show_bubble_size": true,
  53. "show_cat_name": false,
  54. "show_leader_lines": false,
  55. "show_percent": true,
  56. "show_series_name": true,
  57. "show_val": true
  58. }
  59. }`, `{
  60. "type": "line",
  61. "series": [
  62. {
  63. "name": "Sheet1!$A$4",
  64. "categories": "Sheet1!$B$1:$D$1",
  65. "values": "Sheet1!$B$4:$D$4"
  66. }],
  67. "format":
  68. {
  69. "x_scale": 1.0,
  70. "y_scale": 1.0,
  71. "x_offset": 15,
  72. "y_offset": 10,
  73. "print_obj": true,
  74. "lock_aspect_ratio": false,
  75. "locked": false
  76. },
  77. "legend":
  78. {
  79. "position": "left",
  80. "show_legend_key": false
  81. },
  82. "plotarea":
  83. {
  84. "show_bubble_size": true,
  85. "show_cat_name": false,
  86. "show_leader_lines": false,
  87. "show_percent": true,
  88. "show_series_name": true,
  89. "show_val": true
  90. }
  91. }`); err != nil {
  92. fmt.Println(err)
  93. return
  94. }
  95. // 保存工作簿
  96. if err := f.SaveAs("Book1.xlsx"); err != nil {
  97. fmt.Println(err)
  98. }
  99. }

创建图表工作表

  1. func (f *File) AddChartSheet(sheet, format string, combo ...string) error

根据给定的工作表名称和图表样式属性创建图表工作表,图表样式属性的定义与 AddChart 函数相同。Excel 中的图表工作表是仅包含图表的工作表。

删除图表

  1. func (f *File) DeleteChart(sheet, cell string) (err error)

根据给定的工作表名称和单元格坐标删除图表。