Go 操作 excel 利器之 excelize

b9c3b40c4b47d51801a822d1e7aad1d0.png

Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML标准。可以使用它来读取写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片、图标、以及工具函数等,同时对单元格的渲染以及图表的类型有良好的支持,并且在保存后不会丢失图表样式,可以应用在各种报表系统中。

使用场景

在一些情况下我们需要通过程序操作 Excel 文档,例如:打开读取已有 Excel 文档内容、创建新的 Excel 文档、基于已有文档(模版)生成新的 Excel 文档、向 Excel 文档中插入图片、图表和表格等元素,有时还需要跨平台实现这些操作。使用 Excelize 可以方便的满足上述需求。

安装

go get github.com/360EntSecGroup-Skylar/excelize
# 如果你是通过Go Module管理的包,执行以下安装
go get github.com/360EntSecGroup-Skylar/excelize/v2

基础使用

excelize的Github[1]上有些简单的demo,读写Demo,创建图表,插入图表等,我这里写了一个简单的Demo,把一个简单的Json文本数据写入到Excel文件中,同时对写入的数据通过Excel自带函数进行求总和百分比等基本计算。

Json的数据格式:

{
 "110025": {
  "name": "A",
  "amount": 1000,
  "price": "1.1540",
  "unitPrice": 1.1287,
  "earnings": -116.92,
  "priceDate": "2020-05-11"
 },
 "159848": {
  "name": "B",
  "amount": 1000,
  "price": "0.7801",
  "unitPrice": 1.9728,
  "earnings": 17.35,
  "priceDate": "2020-05-11"
 }
}

Demo代码:

创建一个demo目录

mkdir excelizeDemo && cd $_
go mod init
go get github.com/360EntSecGroup-Skylar/excelize/v2

go代码:

package main

import (
 "encoding/json"
 "fmt"
 "github.com/360EntSecGroup-Skylar/excelize"
 "io/ioutil"
 "os"
 "strconv"
)

type J struct {
 Name      string  `json:"name"`
 Amount    float64 `json:"amount"`
 Price     string  `json:"price"`
 UnitPrice float64 `json:"unitPrice"`
}

func main() {
 f, err := os.Open("j.json")
 if err != nil {
  fmt.Printf("文件读取失败: %v", err.Error())
 }
 body, err := ioutil.ReadAll(f)
 m := make(map[string]J)
 err = json.Unmarshal(body, &m)
 if err != nil {
  fmt.Printf("Unmarshal with error: %+v\n", err)
 }
 i := 1

 xlsx := excelize.NewFile()
 index := xlsx.NewSheet("demo")

 for k, v := range m {
  xlsx.SetCellStr("demo", "A"+strconv.Itoa(i), k)
  xlsx.SetCellStr("demo", "B"+strconv.Itoa(i), v.Name)
  xlsx.SetCellValue("demo", "C"+strconv.Itoa(i), v.Amount)
  xlsx.SetCellStr("demo", "D"+strconv.Itoa(i), v.Price)
  xlsx.SetCellValue("demo", "E"+strconv.Itoa(i), v.UnitPrice)
  i += 1
 }
 sumCell := "SUM(C1:C" + strconv.Itoa(i-1) + ")"
 xlsx.SetCellFormula("demo", "C"+strconv.Itoa(i), sumCell) // 计算基金投入总金额

 // 计算基金份额投入占比
 for n := 1; n < i; n++ {
  format := "C" + strconv.Itoa(n) + "/" + "$C$" + strconv.Itoa(i)
  xlsx.SetCellFormula("demo", "F"+strconv.Itoa(n),format)
 }
 xlsx.SetActiveSheet(index)
 if err := xlsx.SaveAs("demo.xlsx"); err != nil {
  fmt.Println(err)
 }
 fmt.Println("输出完成...")
}

最后执行一下

go run jsontoexcel.go
输出完成...

最后查看一下输出的demo.xlsx文件

32cd09093fb0a7b4ba4b0e03168d00c2.png

写在最后

网上有一个详细介绍excelize使用的中文文档,写的挺好的,对于操作excel的基本操作都有说明,这里分享一下:

地址为: https://www.bookstack.cn/books/excelize-v2.0[2]

cb0340dee600192b1aefd3fb64a7d01d.png

对于一些函数使用不确定的,也可以通过github上源代码的测试文件中查看相关的案例,

ad563e4af2ab81104d1a755faebfb750.png好了,就写到这里了...

参考资料

[1]

360EntSecGroup-Skylar/excelize: https://github.com/360EntSecGroup-Skylar/excelize

[2]

excelize中文文档: https://www.bookstack.cn/books/excelize-v2.0

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Excel数据透视表是Excel图表工具中的一项功能强大的工具,用于对表格数据进行分类汇总和分析。以下是Excel数据透视表的使用方法详解: 1. 准备数据:在Excel中,将需要进行汇总和分析的数据放置在一个单独的工作表中,并确保每列都有正确的标题。 2. 选择数据:选中需要进行数据透视表的范围,包括标题和所有数据。 3. 创建数据透视表:在Excel菜单栏中,选择“插入”选项卡,点击“数据透视表”按钮,会弹出“创建数据透视表”对话框。 4. 设置数据源:在“创建数据透视表”对话框中,选择数据透视表的数据源范围,可以是当前工作表或其他工作簿。 5. 定义数据透视表的布局:在“创建数据透视表”对话框的“布局”选项中,选择需要用作行标签、列标签、数据和筛选器的字段。 6. 设置汇总方式:在“创建数据透视表”对话框的“值字段设置”选项中,选择需要进行汇总的字段,并设置汇总的方式,如求和、平均值等。 7. 定义数据透视表的样式:在“创建数据透视表”对话框的“样式”选项中,选择数据透视表的样式或自定义样式。 8. 确定数据透视表的位置:在“创建数据透视表”对话框中,选择数据透视表要插入的位置,可以是新的工作表或当前工作表的指定位置。 9. 完成数据透视表的创建:点击“确定”按钮,Excel将根据选择的设置,生成相应的数据透视表。 10. 使用数据透视表:生成的数据透视表将显示在所选位置上,可以通过拖动字段进行重新布局、通过筛选器进行数据筛选、通过更改汇总方式进行数据汇总等。 总之,Excel数据透视表是一种非常方便和实用的工具,可以帮助我们对大量数据进行分类汇总和分析,从而更好地理解和利用数据。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云原生生态圈

你的鼓励是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值