Rumah > pembangunan bahagian belakang > Golang > Tukar data fail Excel kepada rentetan JSON dalam Go tanpa sebarang definisi struct

Tukar data fail Excel kepada rentetan JSON dalam Go tanpa sebarang definisi struct

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-02-05 22:45:08
ke hadapan
626 orang telah melayarinya

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

Kandungan soalan

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
Salin selepas log masuk

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!


Jawapan Betul


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
}

Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan