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

use*_*181 5 c#-4.0

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

Kyl*_*yle 9

这是另一个部分解决方案,只要json采用表格格式,就不需要制作json定义.

DataTable dt = (DataTable)JsonConvert.DeserializeObject(json, (typeof(DataTable)));
Run Code Online (Sandbox Code Playgroud)

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

许多发布在这里: 如何将DataTable导出到Excel


小智 2

这可以在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);
                    }
    
                }
    
    Run Code Online (Sandbox Code Playgroud)
  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;
    }
    
    Run Code Online (Sandbox Code Playgroud)