我想将 .json 文件转换为 Excel 表格,但使用 C# 语言无法找到解决方案。有人能够帮我提供确切的解决方案吗?
我想将 .json 文件转换为 Excel 表格,但使用 C# 语言无法找到解决方案。有人能够帮我提供确切的解决方案吗?
这里是另一种部分解决方案,不需要制作json定义,只要保证json格式为表格即可。
DataTable dt = (DataTable)JsonConvert.DeserializeObject(json, (typeof(DataTable)));
你可以在互联网上使用众多的datatable -> excel解决方案之一。
这里有很多解决方案: 如何将DataTable导出为Excel
这取决于数据和您在Excel方面想要实现的目标。我建议使用Json.NET并输出到CSV文件中,该文件可以在Excel中打开。
考虑以下JSON……一个简单的数组
[{
"foo": "bar"
}]
var jsonData = "[{ \"foo\": \"bar\" }]";
var jsonDefinition = new object[]
{
new {foo = ""}
};
var result = JsonConvert.DeserializeAnonymousType(jsonData, jsonDefinition);
var sb = new StringBuilder();
foreach (dynamic o in result)
{
sb.AppendLine(o.foo);
}
File.WriteAllText(@"c:\code\test.csv", sb.ToString());
em.Save(stExportFileFullPath, items, "Totals", true);
items是一个由以下类和字段组成的列表。
public class CarrierRevenueLOBReport {
public int Year { get; set; }
public int Month { get; set; }
public string Carrier { get; set; }
public string LOBName { get; set; }
public string NewOrRenewal { get; set; }
public double SumPremium { get; set; }
public double SumCommision { get; set; }
}
*/
Create And write Json Data to 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);
}
}
Create C# Object from Reading Json Key Value pairs
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;
}