• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Golang实现读取excel文件并转换为JSON格式

    发布者: 晋3555 | 发布时间: 2025-8-14 07:45| 查看数: 43| 评论数: 0|帖子模式

    需求

    假如有如下表格:

    我希望能够得到如下的JSON数组以供后续使用:
    1. [
    2.     {
    3.         "create_date": "2025-02-25 06:31:11",
    4.         "id": "26",
    5.         "indicator_value": "0.25",
    6.         "params": "1,4",
    7.         "primary_id": "1",
    8.         "project_id": "1",
    9.         "second_id": "1",
    10.         "status": "0",
    11.         "update_date": "2025-02-25 06:31:11"
    12.     },
    13.     {
    14.         "create_date": "2025-02-25 06:31:18",
    15.         "id": "27",
    16.         "indicator_value": "0.5",
    17.         "params": "1,2",
    18.         "primary_id": "1",
    19.         "project_id": "2",
    20.         "second_id": "1",
    21.         "status": "0",
    22.         "update_date": "2025-02-25 06:31:18"
    23.     }
    24. ]
    复制代码
    由于暂时没找到能实现该功能的第三方依赖,所以只能自己写个简单的方法实现此功能

    实现

    首先安装
    1. excelize
    复制代码
    依赖以便读取excel文件
    1. go get github.com/xuri/excelize/v2
    复制代码
    然后创建方法
    1. readExcelToJSON
    复制代码
    1. import (
    2.         "encoding/json"
    3.         "strings"

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

    6. // 读取Excel文件并转换为JSON
    7. func readExcelToJSON(filePath, sheetName string) (string, error) {
    8.         f, err := excelize.OpenFile(filePath)
    9.         if err != nil {
    10.                 return "", err
    11.         }

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

    16.         // 提取标题行中每列的名称
    17.         headers := make([]string, len(rows[0]))
    18.         for j, col := range rows[0] {
    19.                 headers[j] = strings.TrimSpace(col)
    20.         }

    21.         var jsonDataSlice []string

    22.         // 忽略标题行
    23.         rows = rows[1:]

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

    27.                 // 填充数据到map中,使用列名作为key
    28.                 for j, col := range row {
    29.                         header := headers[j]                // 当前列的列名
    30.                         cellValue := strings.TrimSpace(col) // 单元格的值

    31.                         // 不需要转换数据类型
    32.                         rowData[header] = cellValue
    33.                 }

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

    38.                 jsonDataSlice = append(jsonDataSlice, string(jsonData))

    39.         }
    40.         // 将结果切片转换为标准格式JSON字符串
    41.         jsonResult := "[" + strings.Join(jsonDataSlice, ",") + "]"
    42.         return jsonResult, nil
    43. }
    复制代码
    如果需要转换数据类型,可以把
    1. rowData[header] = cellValue
    复制代码
    替换成下面的代码
    1.                         if num, err := strconv.Atoi(cellValue); err == nil {
    2.                                 rowData[header] = num
    3.                         } else if floatNum, err := strconv.ParseFloat(cellValue, 64); err == nil {
    4.                                 rowData[header] = floatNum
    5.                         } else if boolVal, err := strconv.ParseBool(cellValue); err == nil {
    6.                                 rowData[header] = boolVal
    7.                         } else {
    8.                                 rowData[header] = cellValue
    9.                         }
    复制代码
    测试
    1. import (
    2.         "testing"
    3. )

    4. func TestReadExcelRows(t *testing.T) {

    5.         rows, err := readExcelToJSON("C:\\Users\\ThinkPad\\Desktop\\tproject_input.xlsx", "Result 1")
    6.         if err != nil {
    7.                 t.Errorf("error = %v", err)
    8.                 return
    9.         }
    10.         t.Logf("rows = %v", rows)
    11. }
    复制代码

    到此这篇关于Golang实现读取excel文件并转换为JSON格式的文章就介绍到这了,更多相关Golang读取excel并转为JSON格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表