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
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
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 !
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 }
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!