Rumah >pembangunan bahagian belakang >Golang >Tukar data fail Excel kepada rentetan JSON dalam Go tanpa sebarang definisi struct
Saya baru dalam bidang bahasa. Saya mempunyai keperluan di mana aplikasi akan membaca fail excel dan menukarnya menjadi rentetan json tanpa bergantung pada struktur yang ditentukan. Saya meneroka beberapa perpustakaan di mana sama ada definisi struktur ini diperlukan atau sekurang-kurangnya mesti ada pengepala lajur excel. Contohnya,
github.com/xuri/excelize github.com/onkarvhanumante/Excel2JsonTree github.com/FerdinaKusumah/excel2json
Namun, saya tidak dapat mencari mana-mana tempat yang boleh mengendalikan data excel mentah dan menukarnya kepada json.
Tolong beri saya tunjuk ajar, terima kasih!
Jika anda boleh merawat semua nilai sebagai rentetan maka anda boleh melakukannya seperti yang ditunjukkan dalam coretan kod di bawah. Skrip membaca semua lembaran kerja (tab) dan mencipta fail json dalam dua format (dengan dan tanpa pengepala).
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 }
Atas ialah kandungan terperinci Tukar data fail Excel kepada rentetan JSON dalam Go tanpa sebarang definisi struct. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!