我想将.json文件转换为excel。我无法使用c#语言针对这些问题在任何地方找到解决方案。任何人都可以帮我解决这些问题,并提供确切的解决方案。
这里是另一种局部解决方案,只要json是表格格式,就不需要进行json定义。
DataTable dt = (DataTable)JsonConvert.DeserializeObject(json, (typeof(DataTable)));
从这里,您可以使用互联网上可用的众多数据表中的任何一种-> excel解决方案。
许多发布在这里:How to export DataTable to Excel
取决于数据和您要在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());
可以在EPPlus的帮助下完成,请查看下面的代码以获取完整答案。
创建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);
}
}
通过读取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;
}