最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang實(shí)現(xiàn)讀取excel文件并轉(zhuǎn)換為JSON格式

 更新時(shí)間:2025年03月04日 09:38:06   作者:ppo_wu  
本文介紹了如何使用Golang讀取Excel文件并將其轉(zhuǎn)換為JSON格式,通過(guò)安裝excelize依賴和創(chuàng)建readExcelToJSON方法,可以實(shí)現(xiàn)這一功能,如果需要轉(zhuǎn)換數(shù)據(jù)類型,可以修改相應(yīng)的代碼,需要的朋友可以參考下

需求

假如有如下表格:

在這里插入圖片描述

我希望能夠得到如下的JSON數(shù)組以供后續(xù)使用:

[
    {
        "create_date": "2025-02-25 06:31:11",
        "id": "26",
        "indicator_value": "0.25",
        "params": "1,4",
        "primary_id": "1",
        "project_id": "1",
        "second_id": "1",
        "status": "0",
        "update_date": "2025-02-25 06:31:11"
    },
    {
        "create_date": "2025-02-25 06:31:18",
        "id": "27",
        "indicator_value": "0.5",
        "params": "1,2",
        "primary_id": "1",
        "project_id": "2",
        "second_id": "1",
        "status": "0",
        "update_date": "2025-02-25 06:31:18"
    }
]

由于暫時(shí)沒(méi)找到能實(shí)現(xiàn)該功能的第三方依賴,所以只能自己寫個(gè)簡(jiǎn)單的方法實(shí)現(xiàn)此功能

實(shí)現(xiàn)

首先安裝excelize依賴以便讀取excel文件

go get github.com/xuri/excelize/v2

然后創(chuàng)建方法readExcelToJSON

import (
	"encoding/json"
	"strings"

	"github.com/xuri/excelize/v2"
)

// 讀取Excel文件并轉(zhuǎn)換為JSON
func readExcelToJSON(filePath, sheetName string) (string, error) {
	f, err := excelize.OpenFile(filePath)
	if err != nil {
		return "", err
	}

	rows, err := f.GetRows(sheetName)
	if err != nil {
		return "", err
	}

	// 提取標(biāo)題行中每列的名稱
	headers := make([]string, len(rows[0]))
	for j, col := range rows[0] {
		headers[j] = strings.TrimSpace(col)
	}

	var jsonDataSlice []string

	// 忽略標(biāo)題行
	rows = rows[1:]

	// 遍歷所有行
	for _, row := range rows {
		rowData := make(map[string]interface{})

		// 填充數(shù)據(jù)到map中,使用列名作為key
		for j, col := range row {
			header := headers[j]                // 當(dāng)前列的列名
			cellValue := strings.TrimSpace(col) // 單元格的值

			// 不需要轉(zhuǎn)換數(shù)據(jù)類型
			rowData[header] = cellValue
		}

		jsonData, err := json.Marshal(rowData)
		if err != nil {
			return "", err
		}

		jsonDataSlice = append(jsonDataSlice, string(jsonData))

	}
	// 將結(jié)果切片轉(zhuǎn)換為標(biāo)準(zhǔn)格式JSON字符串
	jsonResult := "[" + strings.Join(jsonDataSlice, ",") + "]"
	return jsonResult, nil
}

如果需要轉(zhuǎn)換數(shù)據(jù)類型,可以把rowData[header] = cellValue替換成下面的代碼

			if num, err := strconv.Atoi(cellValue); err == nil {
				rowData[header] = num
			} else if floatNum, err := strconv.ParseFloat(cellValue, 64); err == nil {
				rowData[header] = floatNum
			} else if boolVal, err := strconv.ParseBool(cellValue); err == nil {
				rowData[header] = boolVal
			} else {
				rowData[header] = cellValue
			}

測(cè)試

import (
	"testing"
)

func TestReadExcelRows(t *testing.T) {

	rows, err := readExcelToJSON("C:\\Users\\ThinkPad\\Desktop\\tproject_input.xlsx", "Result 1")
	if err != nil {
		t.Errorf("error = %v", err)
		return
	}
	t.Logf("rows = %v", rows)
}

在這里插入圖片描述

到此這篇關(guān)于Golang實(shí)現(xiàn)讀取excel文件并轉(zhuǎn)換為JSON格式的文章就介紹到這了,更多相關(guān)Golang讀取excel并轉(zhuǎn)為JSON格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Go語(yǔ)言中的結(jié)構(gòu)體的特性

    詳解Go語(yǔ)言中的結(jié)構(gòu)體的特性

    結(jié)構(gòu)體是Go語(yǔ)言中重要且靈活的概念之一,本文旨在深入介紹Go語(yǔ)言中的結(jié)構(gòu)體,揭示其重要性和靈活性,并向讀者展示結(jié)構(gòu)體支持的眾多特性,需要的可以參考一下
    2023-06-06
  • golang生成vcf通訊錄格式文件詳情

    golang生成vcf通訊錄格式文件詳情

    這篇文章主要介紹了golang生成vcf通訊錄格式文件詳情,?VCF是通訊錄格式文件,一般需要用手機(jī)通訊錄導(dǎo)入導(dǎo)出的文件格式都是vcf格式。?下面詳細(xì)內(nèi)容介紹需要的小伙伴可以參考一下
    2022-03-03
  • golang簡(jiǎn)易實(shí)現(xiàn)?k8s?的yaml上傳并應(yīng)用示例方案

    golang簡(jiǎn)易實(shí)現(xiàn)?k8s?的yaml上傳并應(yīng)用示例方案

    這篇文章主要為大家介紹了golang簡(jiǎn)易實(shí)現(xiàn)?k8s?的yaml上傳并應(yīng)用示例方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Golang中Interface接口的三個(gè)特性

    Golang中Interface接口的三個(gè)特性

    本文詳細(xì)講解了Golang中Interface接口的三個(gè)特性,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • go?install和go?get的區(qū)別實(shí)例詳解

    go?install和go?get的區(qū)別實(shí)例詳解

    go install是Golang用來(lái)編譯和安裝自定義package的工具,下面這篇文章主要給大家介紹了關(guān)于go?install和go?get區(qū)別的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • go?time.After優(yōu)化后性能提升34%內(nèi)存減少67%

    go?time.After優(yōu)化后性能提升34%內(nèi)存減少67%

    這篇文章主要介紹了go語(yǔ)言time.After優(yōu)化后性能提升34%內(nèi)存減少67%實(shí)例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Go和RabbitMQ構(gòu)建高效的消息隊(duì)列系統(tǒng)

    Go和RabbitMQ構(gòu)建高效的消息隊(duì)列系統(tǒng)

    本文主要介紹了使用Go語(yǔ)言和RabbitMQ搭建一個(gè)簡(jiǎn)單的消息隊(duì)列系統(tǒng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • 讓go程序以后臺(tái)進(jìn)程或daemon方式運(yùn)行方法探究

    讓go程序以后臺(tái)進(jìn)程或daemon方式運(yùn)行方法探究

    本文探討了如何通過(guò)Go代碼實(shí)現(xiàn)在后臺(tái)運(yùn)行的程序,最近我用Go語(yǔ)言開(kāi)發(fā)了一個(gè)WebSocket服務(wù),我希望它能在后臺(tái)運(yùn)行,并在異常退出時(shí)自動(dòng)重新啟動(dòng),我的整體思路是將程序轉(zhuǎn)為后臺(tái)進(jìn)程,也就是守護(hù)進(jìn)程(daemon)
    2024-01-01
  • Go語(yǔ)言學(xué)習(xí)技巧之如何合理使用Pool

    Go語(yǔ)言學(xué)習(xí)技巧之如何合理使用Pool

    這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言學(xué)習(xí)技巧之如何合理使用Pool的相關(guān)資料,Pool用于存儲(chǔ)那些被分配了但是沒(méi)有被使用,而未來(lái)可能會(huì)使用的值,以減小垃圾回收的壓力。文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • Go-家庭收支記賬軟件項(xiàng)目實(shí)現(xiàn)

    Go-家庭收支記賬軟件項(xiàng)目實(shí)現(xiàn)

    這篇文章主要介紹了Go-家庭收支記賬軟件項(xiàng)目實(shí)現(xiàn),本文章內(nèi)容詳細(xì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,需要的朋友可以參考下
    2023-01-01

最新評(píng)論

武义县| 阜新市| 延川县| 博罗县| 垣曲县| 商城县| 南昌市| 嘉兴市| 沙坪坝区| 庆安县| 富民县| 吉隆县| 绥滨县| 射洪县| 石渠县| 临沭县| 夏津县| 盐亭县| 石景山区| 大邑县| 漾濞| 泗洪县| 文水县| 商城县| 克拉玛依市| 杂多县| 噶尔县| 宝鸡市| 光泽县| 嘉祥县| 河南省| 大新县| 工布江达县| 晴隆县| 静海县| 宁波市| 稻城县| 鸡泽县| 阿克苏市| 平顺县| 长治县|