golang代码实例库

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2783|回复: 0

golang:在excel文档中,根据内容创建图表

[复制链接]

82

主题

82

帖子

486

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
486
发表于 2021-12-12 12:05:09 | 显示全部楼层 |阅读模式
实例说明
创建一个excel文件,写入统计数据,并且根据统计数据绘制图表
1)写入统计数据
2)根据统计数据绘制对应图表
3)使用github.com/xuri/excelize组件
4)需要注意,这个要求go版本在1.5及以上)该组件有完整文档,更多功能请参考:https://xuri.me/excelize/zh-hans/
效果图:
企业微信截图_7f123a70-e289-43a7-8671-449245b6d8e4.png

实例代码
[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)
   }
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|golang代码实例库 ( 粤ICP备2021162396号 )

GMT+8, 2025-1-22 13:10 , Processed in 0.020367 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表