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 文件的示例代码:

package main

import (
    "fmt"

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

func main() {
    file, err := excelize.OpenFile("Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }

    cells := file.GetRows("Sheet1")
    for _, row := range cells {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}
  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 文件的示例代码:

package main

import (
    "fmt"

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

func main() {
    file, err := excelize.OpenFile("Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }

    cells := file.GetRows("Sheet1")
    for _, row := range cells {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}

实战:

// @description: SharedImport 导入
// @param {string} filePath
// @param {int64} commitID
// @param {http.Header} header
// @return {*}
func SharedImport(filePath, fileName string, commitID int64, header http.Header) (int64, error) {
	plog.Info("SharedImport", "processing cpp file with file path specified: %v", filePath)
	f, err := excelize.OpenFile(filePath)
	if err != nil {
		plog.Error("", "%v", err)
		return -1, err
	}
	sheetList := garray.NewStrArrayFrom(f.GetSheetList())
	plog.Info("SharedImport", "share file contains sheet list: %v", sheetList.Slice())
	if sheetList.Contains(sharedbilltype.SHARE_INFOMATION_CN) {
		plog.Info("SharedImport", "processing CN share template, finding key cells with chinese")
		err = ShareCNImport(f, filePath, fileName, commitID, header)
		if err != nil {
			plog.Error("", "%v", err)
			return -1, err
		}
		return commitID, nil
	} else if sheetList.Contains(sharedbilltype.SHARE_INFOMATION_EN) {
		plog.Info("SharedImport", "processing EN share template, finding key cells with english")
		err = ShareENImport(f, filePath, fileName, commitID, header)
		if err != nil {
			plog.Error("", "%v", err)
			return -1, err
		}
		return commitID, nil
	} else {
		msgCN := sharedbilltype.ERR_INVALID_SHARE_TEMPLATE_CN
		msgEN := sharedbilltype.ERR_INVALID_SHARE_TEMPLATE_EN
		overviewMsgCN := sharedbilltype.ERR_OVERVIEW_WRONG_FILE_CN
		overviewMsgEN := sharedbilltype.ERR_OVERVIEW_WRONG_FILE_EN
		plog.Warn("SharedImport", msgCN)
		plog.Warn("SharedImport", msgEN)
		plog.Warn("SharedImport", overviewMsgCN)
		plog.Warn("SharedImport", overviewMsgEN)
		err = sharedbillrdb.SaveTInfShareMainValidate([]*sharedbilltype.TableTInfBillShareMainValidate{
			NewInvalidFormatRecord(filePath, commitID, msgCN, msgEN, 0, "", 0, "", 0, "", header, fileName),
			NewInvalidFormatOverviewRecord(filePath, commitID, 0, 0, overviewMsgCN, overviewMsgEN, header, fileName),
		})
		if err != nil {
			plog.Error("", "%v", err)
			return -1, err
		}
		return commitID, nil
	}
}

总结:

github.com/xuri/excelize/v2github.com/360EntSecGroup-Skylar/excelize/v2
github.com/xuri/excelize/v2
github.com/360EntSecGroup-Skylar/excelize/v2
github.com/xuri/excelize/v2github.com/360EntSecGroup-Skylar/excelize/v2

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

账单管理复杂
· 维度单一的公有云账单服务
· 不支持跨云的公有云账单服务
· 耗时易错的人工账单整理

预算管理不清晰
· 缺乏清晰的应用预算情况视角
· 复杂的共享资源平摊计算
· 缺乏多云预算总览视角

无明确成本优化建议
· 人工整理分析,耗时耗力
· 缺乏多云成本变化总览视角
· 可持续性资源成本优化需求

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

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

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