目录
- 需求
- 实现
- 测试
需求
假如有如下表格:
我希望能够得到如下的jsON数组以供后续使用:
[ { "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" } ]
由于暂时没找到能实现该功能的第三方依赖,所以只能自己写个简单的方法实现此功能
实现
首先安装excelize
依赖以便读取excel文件
go get github.com/xuri/excelize/v2python
然后创建方法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 jsonDataSROTMtijQxlice []string // 忽略标题行 rows = rows[1:] // 遍历所有行 for _, row := range rows { rowData := make(map[string]interface{}) // 填充数据到map中,使用列名作为key for j, col := range row { header := headers[j] 编程 // 当前www.devze.com列的列名 cellValue := strings.TrimSpace(col) // 单元格的值 // 不需要转换数据类型 rowData[header] = cellValue } jsonData, err := json.Marshal(rowData) if err != nil { return "", err } jsonDataSlice = append(jsonDataSlice, string(jsonData)) } // 将结果切片转换为标准格式JSON字符串 jsonResult := ROTMtijQx"[" + strings.Join(jsonDataSlice, ",") + "]" return jsonResult, nil }
如果需要转换数据类型,可以把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实现读取excel文件并转换为JSON格式的文章就介绍到这了,更多相关Golang读取excel并转为JSON格式内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论