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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境圖文詳解
GoLand?是?JetBrains?公司推出的商業(yè)?Go?語言集成開發(fā)環(huán)境(IDE),這篇文章主要介紹了Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境詳解,需要的朋友可以參考下2022-10-1010個現(xiàn)代網站開發(fā)必備的Go軟件包工具盤點
這篇文章主要為大家介紹了10個現(xiàn)代網站開發(fā)必備的Go軟件包,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10