您现在的位置是:首页 > 技术教程 正文

golang操作excel两种excelize包对比

admin 阅读: 2024-03-18
后台-插件-广告管理-内容页头部广告(手机)

Go 语言是一门适合用于编写高效且并发的 Web 应用程序的编程语言,同时也可以使用它进行数据处理和分析。在数据处理和分析过程中,Excel 是一种常用的电子表格软件,很多情况下需要将数据导入到 Excel 中进行分析和处理。在 Go 语言中,可以使用两种不同的 excelize 包来操作 Excel 文件,分别是 xuri/excelize 和 360EntSecGroup-Skylar/excelize。

  1. github.com/xuri/excelize/v2

xuri/excelize 是一个用于操作 Excel 文件的第三方库,可以通过以下方式导入:

import "github.com/xuri/excelize/v2"

xuri/excelize 是 Go 语言社区中最受欢迎的 Excel 文件操作库之一,它提供了丰富的功能,可以用于读取、修改和创建 Excel 文件,包括但不限于以下功能:

  • 读取 Excel 文件中的数据
  • 修改 Excel 文件中的数据
  • 在 Excel 文件中插入图片
  • 在 Excel 文件中添加图表
  • 在 Excel 文件中设置打印选项
  • 对 Excel 文件进行加密
  • 提供更多的文件格式支持(例如 CSV、XML)

以下是 xuri/excelize 读取 Excel 文件的示例代码:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/xuri/excelize/v2"
  5. )
  6. func main() {
  7. file, err := excelize.OpenFile("Book1.xlsx")
  8. if err != nil {
  9. fmt.Println(err)
  10. return
  11. }
  12. cells := file.GetRows("Sheet1")
  13. for _, row := range cells {
  14. for _, colCell := range row {
  15. fmt.Print(colCell, "\t")
  16. }
  17. fmt.Println()
  18. }
  19. }
  1. github.com/360EntSecGroup-Skylar/excelize/v2

360EntSecGroup-Skylar/excelize 是由 360 企业安全组(360 Enterprise Security Group)开发的一个 Excel 文件处理库,可以使用以下方式导入:

import "github.com/360EntSecGroup-Skylar/excelize/v2"

相较于 xuri/excelize,360EntSecGroup-Skylar/excelize 提供了更多的功能,包括但不限于以下功能:

  • 读取 Excel 文件中的数据
  • 修改 Excel 文件中的数据
  • 在 Excel 文件中插入图片
  • 在 Excel 文件中添加图表
  • 在 Excel 文件中设置打印选项
  • 对 Excel 文件进行加密
  • 提供更多的文件格式支持(例如 CSV、XML)
  • 提供更多的单元格格式化选项(例如设置单元格样式、设置单元格宽度和高度)

以下是 360EntSecGroup-Skylar/excelize 读取 Excel 文件的示例代码:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/360EntSecGroup-Skylar/excelize/v2"
  5. )
  6. func main() {
  7. file, err := excelize.OpenFile("Book1.xlsx")
  8. if err != nil {
  9. fmt.Println(err)
  10. return
  11. }
  12. cells := file.GetRows("Sheet1")
  13. for _, row := range cells {
  14. for _, colCell := range row {
  15. fmt.Print(colCell, "\t")
  16. }
  17. fmt.Println()
  18. }
  19. }

实战:

  1. // @description: SharedImport 导入
  2. // @param {string} filePath
  3. // @param {int64} commitID
  4. // @param {http.Header} header
  5. // @return {*}
  6. func SharedImport(filePath, fileName string, commitID int64, header http.Header) (int64, error) {
  7. plog.Info("SharedImport", "processing cpp file with file path specified: %v", filePath)
  8. f, err := excelize.OpenFile(filePath)
  9. if err != nil {
  10. plog.Error("", "%v", err)
  11. return -1, err
  12. }
  13. sheetList := garray.NewStrArrayFrom(f.GetSheetList())
  14. plog.Info("SharedImport", "share file contains sheet list: %v", sheetList.Slice())
  15. if sheetList.Contains(sharedbilltype.SHARE_INFOMATION_CN) {
  16. plog.Info("SharedImport", "processing CN share template, finding key cells with chinese")
  17. err = ShareCNImport(f, filePath, fileName, commitID, header)
  18. if err != nil {
  19. plog.Error("", "%v", err)
  20. return -1, err
  21. }
  22. return commitID, nil
  23. } else if sheetList.Contains(sharedbilltype.SHARE_INFOMATION_EN) {
  24. plog.Info("SharedImport", "processing EN share template, finding key cells with english")
  25. err = ShareENImport(f, filePath, fileName, commitID, header)
  26. if err != nil {
  27. plog.Error("", "%v", err)
  28. return -1, err
  29. }
  30. return commitID, nil
  31. } else {
  32. msgCN := sharedbilltype.ERR_INVALID_SHARE_TEMPLATE_CN
  33. msgEN := sharedbilltype.ERR_INVALID_SHARE_TEMPLATE_EN
  34. overviewMsgCN := sharedbilltype.ERR_OVERVIEW_WRONG_FILE_CN
  35. overviewMsgEN := sharedbilltype.ERR_OVERVIEW_WRONG_FILE_EN
  36. plog.Warn("SharedImport", msgCN)
  37. plog.Warn("SharedImport", msgEN)
  38. plog.Warn("SharedImport", overviewMsgCN)
  39. plog.Warn("SharedImport", overviewMsgEN)
  40. err = sharedbillrdb.SaveTInfShareMainValidate([]*sharedbilltype.TableTInfBillShareMainValidate{
  41. NewInvalidFormatRecord(filePath, commitID, msgCN, msgEN, 0, "", 0, "", 0, "", header, fileName),
  42. NewInvalidFormatOverviewRecord(filePath, commitID, 0, 0, overviewMsgCN, overviewMsgEN, header, fileName),
  43. })
  44. if err != nil {
  45. plog.Error("", "%v", err)
  46. return -1, err
  47. }
  48. return commitID, nil
  49. }
  50. }

总结:

github.com/xuri/excelize/v2 和 github.com/360EntSecGroup-Skylar/excelize/v2 都是 Golang 中用于操作 Excel 文件的库,它们的区别在于它们是由不同的开发者维护的,它们的功能、性能和使用方式也略有不同。

github.com/xuri/excelize/v2 是由 Xuri 开发的 Excel 文件处理库,它可以读取、写入和编辑 XLSX 格式的 Excel 文件,支持大量的 Excel 功能,如图表、数据透视表、条件格式等,同时还提供了对 PDF 和 HTML 导出的支持。这个库的使用文档详细,具有良好的可维护性和易用性。

github.com/360EntSecGroup-Skylar/excelize/v2 是由 360 安全团队开发的 Excel 文件处理库,它也可以读取、写入和编辑 XLSX 格式的 Excel 文件,支持大量的 Excel 功能,如公式、图表、数据透视表、条件格式等,同时还提供了对 CSV、TSV 和 JSON 导出的支持。这个库的使用文档相对较少,但是它具有很好的性能和稳定性。

因此,选择使用哪个 Excel 处理库取决于您的需求和偏好。如果您需要处理较为复杂的 Excel 文件并导出到 PDF 或 HTML 文件中,那么您可以选择 github.com/xuri/excelize/v2;如果您需要快速处理大量的 Excel 文件并导出到 CSV、TSV 或 JSON 文件中,那么您可以选择 github.com/360EntSecGroup-Skylar/excelize/v2。

如果贵公司有如下用户痛点,可前往 联蔚盘云官网 进行试用

  1. 账单管理复杂
  2. · 维度单一的公有云账单服务
  3. · 不支持跨云的公有云账单服务
  4. · 耗时易错的人工账单整理
  5. 预算管理不清晰
  6. · 缺乏清晰的应用预算情况视角
  7. · 复杂的共享资源平摊计算
  8. · 缺乏多云预算总览视角
  9. 无明确成本优化建议
  10. · 人工整理分析,耗时耗力
  11. · 缺乏多云成本变化总览视角
  12. · 可持续性资源成本优化需求

有兴趣了解更详细的信息,请前往联蔚盘云产品官网!

联蔚盘云官网-致力于全生命周期多云管理服务

若您想试用FinOps产品,点击试用申请链接!

FinOps saas-联蔚盘云 

若您想关注最新的产品动态,请关注公众号!

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜