You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历Json.NET的List<Dictionary<string,object>>并使用EPPUS导出Excel文件

反序列化结果转Excel实现方案

你已经完成了JSON到List<Dictionary<string, object>>的反序列化,后续转换Excel可按以下两步实现:

1. 提取所有唯一字段作为表头

遍历所有字典的键去重,得到完整的表头列表,避免部分字典缺字段导致表头不全:

var allHeaders = resposneJson1
    .SelectMany(d => d.Keys)
    .Distinct()
    .ToList();

2. 填充数据生成Excel

这里提供常用的EPPlus实现方案(非商用场景可免费使用):

  • 首先安装NuGet包:EPPlus
  • 完整实现代码:
using OfficeOpenXml;
using System.IO;

// EPPlus 5及以上版本需要指定证书上下文,非商用场景设置为NonCommercial
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

using(var excelPackage = new ExcelPackage())
{
    // 创建工作表
    var sheet = excelPackage.Workbook.Worksheets.Add("导出数据");

    // 写入表头(第一行)
    for(int col = 0; col < allHeaders.Count; col++)
    {
        sheet.Cells[1, col + 1].Value = allHeaders[col];
        sheet.Cells[1, col + 1].Style.Font.Bold = true;
    }

    // 逐行写入数据(从第二行开始)
    for(int row = 0; row < resposneJson1.Count; row++)
    {
        var currentData = resposneJson1[row];
        for(int col = 0; col < allHeaders.Count; col++)
        {
            // 字典存在对应字段则取值,不存在填空
            sheet.Cells[row + 2, col + 1].Value = 
                currentData.TryGetValue(allHeaders[col], out var val) ? val : "";
        }
    }

    // 自动适配列宽
    sheet.Cells.AutoFitColumns();

    // 保存到本地,也可以转为byte[]返回给前端实现下载
    File.WriteAllBytes(@"D:\数据导出.xlsx", excelPackage.GetAsByteArray());
}

如果是商用场景,建议使用无许可限制的NPOI库实现,核心逻辑和上述完全一致,仅操作Excel的API不同。

内容的提问来源于stack exchange,提问作者ararb78

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 06:24:02