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

WBOY
WBOYke hadapan
2024-02-05 22:45:08527semak imbas

在 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

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
}

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:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam