欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

需求

假如有如下表格:

在這里插入圖片描述

我希望能夠得到如下的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"
    }
]

由于暫時沒找到能實現(xiàn)該功能的第三方依賴,所以只能自己寫個簡單的方法實現(xiàn)此功能

實現(xiàn)

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

go get github.com/xuri/excelize/v2

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

import (
	"encoding/json"
	"strings"

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

// 讀取Excel文件并轉換為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
	}

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

	var jsonDataSlice []string

	// 忽略標題行
	rows = rows[1:]

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

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

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

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

		jsonDataSlice = append(jsonDataSlice, string(jsonData))

	}
	// 將結果切片轉換為標準格式JSON字符串
	jsonResult := "[" + strings.Join(jsonDataSlice, ",") + "]"
	return jsonResult, nil
}

如果需要轉換數(shù)據類型,可以把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
			}

測試

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

在這里插入圖片描述

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

相關文章

  • 修改并編譯golang源碼的操作步驟

    修改并編譯golang源碼的操作步驟

    這篇文章主要介紹了修改并編譯golang源碼的操作步驟,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2021-07-07
  • go中new和make的區(qū)別小結

    go中new和make的區(qū)別小結

    new 只分配內存,make 用于初始化 slice、map 和 channel,本文詳細的介紹了go中new和make的區(qū)別小結,感興趣的可以了解一下
    2023-05-05
  • Go語言中的格式化輸出占位符的用法詳解

    Go語言中的格式化輸出占位符的用法詳解

    在 Go 語言中,格式化輸出是一個非常常用的功能,特別是在處理字符串、數(shù)字和其他數(shù)據類型時,本文將詳細介紹 Go 語言中常用的格式化占位符及其用法,希望對大家有所幫助
    2024-10-10
  • Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境圖文詳解

    Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境圖文詳解

    GoLand?是?JetBrains?公司推出的商業(yè)?Go?語言集成開發(fā)環(huán)境(IDE),這篇文章主要介紹了Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境詳解,需要的朋友可以參考下
    2022-10-10
  • Go語言配置數(shù)據庫連接池的實現(xiàn)

    Go語言配置數(shù)據庫連接池的實現(xiàn)

    本文內容我們將解釋連接池背后是如何工作的,并探索如何配置數(shù)據庫能改變或優(yōu)化其性能。文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • GO中的時間操作總結(time&dateparse)

    GO中的時間操作總結(time&dateparse)

    日常開發(fā)過程中,對于時間的操作可謂是無處不在,但是想實現(xiàn)時間自由還是不簡單的,多種時間格式容易混淆,本文為大家整理了一下GO中的時間操作,有需要的可以參考下
    2023-09-09
  • 詳解Golang中Channel的用法

    詳解Golang中Channel的用法

    如果說goroutine是Go語言程序的并發(fā)體的話,那么channels則是它們之間的通信機制。這篇文章主要介紹Golang中Channel的用法,需要的朋友可以參考下
    2020-11-11
  • 10個現(xiàn)代網站開發(fā)必備的Go軟件包工具盤點

    10個現(xiàn)代網站開發(fā)必備的Go軟件包工具盤點

    這篇文章主要為大家介紹了10個現(xiàn)代網站開發(fā)必備的Go軟件包,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • golang模擬實現(xiàn)帶超時的信號量示例代碼

    golang模擬實現(xiàn)帶超時的信號量示例代碼

    這篇文章主要給大家介紹了關于golang模擬實現(xiàn)帶超時的信號量的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-09-09
  • Go語言對字符串進行SHA1哈希運算的方法

    Go語言對字符串進行SHA1哈希運算的方法

    這篇文章主要介紹了Go語言對字符串進行SHA1哈希運算的方法,實例分析了Go語言針對字符串操作的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03

最新評論