最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 在 Go 中将 Excel 文件数据转换为 JSON 字符串,无需任何结构体定义

    在 go 中将 excel 文件数据转换为 json 字符串,无需任何结构体定义

    问题内容

    我是 go 语言新手。我有一个要求,应用程序将读取 excel 文件并将其转换为 json 字符串,而不依赖于任何定义的结构。我探索了一些库,其中要么需要此结构定义,要么至少必须有 excel 列标题。例如,

    github.com/xuri/excelize
    github.com/onkarvhanumante/Excel2JsonTree
    github.com/FerdinaKusumah/excel2json

    但是,我找不到任何可以处理原始 excel 数据并将其转换为 json 的地方。

    请指导一下,谢谢!

    正确答案

    如果可以将所有值都视为字符串,那么您可以按照下面的代码片段所示进行操作。该脚本读取所有工作表(选项卡)并创建两种格式的 json 文件(带标题和不带标题)。

    package main
    
    import (
        "encoding/json"
        "fmt"
        "os"
    
        "github.com/xuri/excelize/v2"
    )
    
    func main() {
        f, err := excelize.OpenFile("test.xlsx")
        if err != nil {
            fmt.Println(err)
            return
        }
        defer func() {
            if err := f.Close(); err != nil {
                fmt.Println(err)
            }
        }()
    
        // could have multiple sheets
        sheets := f.GetSheetList()
        for _, sheetName := range sheets {
            d, err := f.GetRows(sheetName)
            if err != nil {
                fmt.Println("error reading sheet", sheetName, ":", err)
                return
            }
    
            saveAsJSON(d, sheetName+".json")
            saveAsJSONWithHeaders(d, sheetName+"_with_headers.json")
        }
    
    }
    
    func saveAsJSONWithHeaders(rows [][]string, filename string) error {
        data := make([]map[string]string, len(rows)-1)
        headers := rows[0]
        // excluding header row
        for i, row := range rows[1:] {
            data[i] = make(map[string]string)
            for j, cellValue := range row {
                data[i][headers[j]] = cellValue
            }
        }
    
        return saveAsJSON(data, filename)
    }
    
    func saveAsJSON(data interface{}, filename string) error {
        file, err := os.Create(filename)
        if err != nil {
            return err
        }
        defer file.Close()
        encoder := json.NewEncoder(file)
        if err := encoder.Encode(data); err != nil {
            return err
        }
        return nil
    }
    
    
    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 在 Go 中将 Excel 文件数据转换为 JSON 字符串,无需任何结构体定义
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情