Maison > développement back-end > Golang > Convertir les données d'un fichier Excel en chaîne JSON dans Go sans aucune définition de structure

Convertir les données d'un fichier Excel en chaîne JSON dans Go sans aucune définition de structure

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-05 22:45:08
avant
568 Les gens l'ont consulté

在 Go 中将 Excel 文件数据转换为 JSON 字符串,无需任何结构体定义

Contenu des questions

Je suis nouveau dans la langue. J'ai besoin qu'une application lise un fichier Excel et le convertisse en chaîne json sans s'appuyer sur une structure définie. J'ai exploré quelques bibliothèques où soit cette définition de structure est requise, soit au moins il doit y avoir des en-têtes de colonnes Excel. Par exemple,

github.com/xuri/excelize
github.com/onkarvhanumante/Excel2JsonTree
github.com/FerdinaKusumah/excel2json
Copier après la connexion

Cependant, je ne trouve aucun endroit capable de gérer les données Excel brutes et de les convertir en json.

S'il vous plaît, donnez-moi quelques conseils, merci !


Réponse correcte


Si vous pouvez traiter toutes les valeurs comme des chaînes, vous pouvez le faire comme indiqué dans l'extrait de code ci-dessous. Le script lit toutes les feuilles de calcul (onglets) et crée des fichiers json en deux formats (avec et sans en-têtes).

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
}

Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal