■实例说明
创建一个excel文件,写入统计数据,并且根据统计数据绘制图表
1)写入统计数据
2)根据统计数据绘制对应图表
3)使用github.com/xuri/excelize组件
4)需要注意,这个要求go版本在1.5及以上)该组件有完整文档,更多功能请参考:https://xuri.me/excelize/zh-hans/
效果图:
■实例代码
[Golang] 纯文本查看 复制代码 package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
// 组织数据
categories := map[string]string{
"A2": "小的", "A3": "普通的", "A4": "大的", "B1": "苹果", "C1": "桔子", "D1": "梨子"}
values := map[string]int{
"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
f := excelize.NewFile()
for k, v := range categories {
f.SetCellValue("Sheet1", k, v)
}
for k, v := range values {
f.SetCellValue("Sheet1", k, v)
}
// 在"E1位子"开始生成图标
// 下面是配置文件注释内容,帮助理解,不能将注释直接写在配置部分。
/*
{
// 图例的名字,这里是Sheet1工作区的A2位子的内容,即"小的"
"name": "Sheet1!$A$2",
// 柱状图的名字,这里是Sheet1工作区的B1 -> D1的内容,即"苹果","桔子","梨子"
"categories": "Sheet1!$B$1:$D$1",
// 柱状图的数值,即高度,这里是Sheet1工作区的B2 -> D2的内容,即2,3,4
"values": "Sheet1!$B$2:$D$2"
},
*/
if err := f.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"
}],
"title":
{
"name": "今天需要水果统计情况"
}
}`); err != nil {
fmt.Println(err)
return
}
// 根据指定路径保存文件
if err := f.SaveAs("/data/wenjiancaozuo/chat.xlsx"); err != nil {
fmt.Println(err)
}
}
|