<
查看: 374| 回复: 0
收起左侧

分享一个开源的 Excel 文档基础库 Excelize

xuri | 显示全部楼层
本楼:   👍  1
100%
0%
0   👎
全局:   1
100%
0%
0

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 xuri 于 2024-2-16 13:24 编辑

分享一个我在维护的开源电子表格文档基础库,希望能够帮助到有需要的朋友,欢迎大家参与这个开源项目或者提出建议。

excelize_1080x608.png

excelize_1080x608.png

简介
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel、WPS、OpenOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写函数,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。
GitHub 开源代码仓库:https://github.com/xuri/excelize
下面简单介绍一下基本的使用方法~
创建 Excel 文档
下面是一个创建 Excel 文档的简单例子:
  1. package main

  2. import (
  3.     "fmt"

  4.     "github.com/xuri/excelize/v2"
  5. )

  6. func main() {
  7.     f := excelize.NewFile()
  8.     defer func() {
  9.         if err := f.Close(); err != nil {
  10.             fmt.Println(err)
  11.         }
  12.     }()
  13.     // 创建一个工作表
  14.     index, err := f.NewSheet("Sheet2")
  15.     if err != nil {
  16.         fmt.Println(err)
  17.         return
  18.     }
  19.     // 设置单元格的值
  20.     f.SetCellValue("Sheet2", "A2", "Hello world.")
  21.     f.SetCellValue("Sheet1", "B2", 100)
  22.     // 设置工作簿的默认工作表
  23.     f.SetActiveSheet(index)
  24.     // 根据指定路径保存文件
  25.     if err := f.SaveAs("Book1.xlsx"); err != nil {
  26.         fmt.Println(err)
  27.     }
  28. }
复制代码
读取 Excel 文档
下面是读取 Excel 文档的例子:
  1. package main

  2. import (
  3.     "fmt"

  4.     "github.com/xuri/excelize/v2"
  5. )

  6. func main() {
  7.     f, err := excelize.OpenFile("Book1.xlsx")
  8.     if err != nil {
  9.         fmt.Println(err)
  10.         return
  11.     }
  12.     defer func() {
  13.         // 关闭工作簿
  14.         if err := f.Close(); err != nil {
  15.             fmt.Println(err)
  16.         }
  17.     }()
  18.     // 获取工作表中指定单元格的值
  19.     cell, err := f.GetCellValue("Sheet1", "B2")
  20.     if err != nil {
  21.         fmt.Println(err)
  22.         return
  23.     }
  24.     fmt.Println(cell)
  25.     // 获取 Sheet1 上所有单元格
  26.     rows, err := f.GetRows("Sheet1")
  27.     if err != nil {
  28.         fmt.Println(err)
  29.         return
  30.     }
  31.     for _, row := range rows {
  32.         for _, colCell := range row {
  33.             fmt.Print(colCell, "\t")
  34.         }
  35.         fmt.Println()
  36.     }
  37. }
复制代码
向 Excel 文档中插入图片
  1. package main

  2. import (
  3.     "fmt"
  4.     _ "image/gif"
  5.     _ "image/jpeg"
  6.     _ "image/png"

  7.     "github.com/xuri/excelize/v2"
  8. )

  9. func main() {
  10.     f, err := excelize.OpenFile("Book1.xlsx")
  11.     if err != nil {
  12.         fmt.Println(err)
  13.         return
  14.     }
  15.     defer func() {
  16.         // 关闭工作簿
  17.         if err := f.Close(); err != nil {
  18.             fmt.Println(err)
  19.         }
  20.     }()
  21.     // 插入图片
  22.     if err := f.AddPicture("Sheet1", "A2", "image.png", nil); err != nil {
  23.         fmt.Println(err)
  24.     }
  25.     // 在工作表中插入图片,并设置图片的缩放比例
  26.     if err := f.AddPicture("Sheet1", "D2", "image.jpg",
  27.         &excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
  28.         fmt.Println(err)
  29.     }
  30.     // 在工作表中插入图片,并设置图片的打印属性
  31.     enable, disable := true, false
  32.     if err := f.AddPicture("Sheet1", "H2", "image.gif",
  33.         &excelize.GraphicOptions{
  34.             PrintObject:     &enable,
  35.             LockAspectRatio: false,
  36.             OffsetX:         15,
  37.             OffsetY:         10,
  38.             Locked:          &disable,
  39.         }); err != nil {
  40.         fmt.Println(err)
  41.     }
  42.     // 保存工作簿
  43.     if err = f.Save(); err != nil {
  44.         fmt.Println(err)
  45.     }
  46. }
复制代码
还有一些其他的用法就不一一在这里介绍了,有需要的朋友可以参考文档中的说明进一步了解。另外还提供了基于 WebAssembly 的 excelize-wasm NPM 包,可以为 JavaScript/TypeScript 语言在 Node.js/浏览器中使用。

上一篇:国内大模型公司,调研沃尔玛/山姆 AI assistant(有偿
下一篇:求助:关于 google play 封闭式测试
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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