如何在C#中将.json文件转换为excel

问题描述 投票:5回答:3

我想将.json文件转换为excel。我无法使用c#语言针对这些问题在任何地方找到解决方案。任何人都可以帮我解决这些问题,并提供确切的解决方案。

c#-4.0
3个回答
9
投票

这里是另一种局部解决方案,只要json是表格格式,就不需要进行json定义。

DataTable dt = (DataTable)JsonConvert.DeserializeObject(json, (typeof(DataTable)));

从这里,您可以使用互联网上可用的众多数据表中的任何一种-> excel解决方案。

许多发布在这里:How to export DataTable to Excel


4
投票

取决于数据和您要在Excel方面实现的目标。我将使用Json.NET解决此问题并输出到CSV文件,该文件可以在Excel中打开。

考虑以下JSON ...一个简单数组

[{
    "foo": "bar"
}]

使用Json.NET,我们可以执行以下操作将其放入C#中

var jsonData = "[{ \"foo\": \"bar\" }]";

var jsonDefinition = new object[]
{
    new {foo = ""}
};

var result = JsonConvert.DeserializeAnonymousType(jsonData, jsonDefinition);

然后我们可以遍历结构,输出到CSV文件。

var sb = new StringBuilder();
foreach (dynamic o in result)
{
    sb.AppendLine(o.foo);
}
File.WriteAllText(@"c:\code\test.csv", sb.ToString());

0
投票

可以在EPPlus的帮助下完成,请查看下面的代码以获取完整答案。

  1. 创建Json数据并将其写入Excel

                using (StreamReader r = new StreamReader(file))
                {
                    string json = r.ReadToEnd();
                    var obj = JsonConvert.DeserializeObject<JObject>(json);
    
                    List<JsonData> dataList = GetDataList(obj);
    
                    var fileName = file.Split('\\').Last().Split('.')[0].Trim().ToString();
    
                    using (ExcelPackage excel = new ExcelPackage())
                    {
                        excel.Workbook.Worksheets.Add(fileName);
    
                        var headerRow = new List<string[]>()
                            {
                                    new string[] { "Key", "Value"}
                                };
    
                        string headerRange = "A1:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "1";
    
                        var worksheet = excel.Workbook.Worksheets[fileName];
    
                        worksheet.Cells[headerRange].LoadFromArrays(headerRow);
    
                        worksheet.Cells[2, 1].LoadFromCollection(dataList);
    
                        FileInfo excelFile = new FileInfo($"D:\\JsonFilesToExcel\\{folder}\\{fileName}.xlsx");
                        excel.SaveAs(excelFile);
                    }
    
                }
    
  2. 通过读取Json键值对创建C#对象

    public static List<JsonData> GetDataList(JObject obj)
    {
        var listResult = new List<JsonData>();
    
        foreach (JProperty item in (JToken)obj)
        {
            listResult.Add(new JsonData { Key = item.Name, Value = item.Value.ToString() });
        }
        return listResult;
    }
    
© www.soinside.com 2019 - 2024. All rights reserved.