gpt4 book ai didi

c# - 使用 LightweightExcelReader 将 Excel 转换为 JSON

转载 作者:行者123 更新时间:2023-12-04 22:18:02 24 4
gpt4 key购买 nike

我有一个带有工作表的 Excel 文件 (.xlsx),如下所示:

Name     | Age | Country      |
Nik 17 Switzerland
Thomas 28 Kuba
Waslim 12 Russia
enter image description here
我想将此 excel 表转换为 JSON 格式。
结果应如下所示:
[
{
"Name":"Nik",
"Age":17,
"Country":"Switzerland"
},
{
"Name":"Thomas",
"Age":28,
"Country":"Kuba"
},
{
"Name":"Waslim",
"Age":12,
"Country":"Russia"
}
]
我想使用 LightweightExcelReader框架。我知道有一个 similar question已经问过了,但答案使用 OLEDB,这不再是最佳实践。我想用一个更简单、更快的框架来解决这个转换。
重要的:
行数和列数是动态的并且可以变化,但 excel 工作表的格式在工作表之间保持相同。
这是我的尝试。如您所见,我没有管理很多,而且非常基本。我设法获得了 JSON 中键的第一行:
var excelReader = new ExcelReader(@"path\to\file\test.xlsx");
var sheetReader = excelReader[0];

IEnumerable<object> keys = sheetReader.Row(1);
如何使用 LightweightExcelReader 框架将 Excel 工作表转换为 JSON 格式?

最佳答案

如果您不介意对 Newtonsoft JSON 的依赖,您可以执行以下操作:

public static class ExcelJsonExtensionMethods
{
public static string ToJson(this SheetReader sheetReader)
{
IDictionary<int, string> HeaderNames = GetHeaderNames(sheetReader);
var jArray = new JArray();
while (sheetReader.ReadNext())
{
var jObject = new JObject();
do
{
var propertyName = HeaderNames[new CellRef(sheetReader.Address).ColumnNumber];
jObject[propertyName] = sheetReader.Value?.ToString();
} while (sheetReader.ReadNextInRow());
jArray.Add(jObject);
}

return jArray.ToString();
}

private static IDictionary<int, string> GetHeaderNames(SheetReader sheetReader)
{
var headerNames = new Dictionary<int, string>();
while (sheetReader.ReadNextInRow())
{
headerNames.Add(new CellRef(sheetReader.Address).ColumnNumber, sheetReader.Value?.ToString());
}

return headerNames;
}
}
像这样使用它:
var excelReader = new ExcelReader(@"path\to\file\test.xlsx");
var sheetReader = excelReader[0];
var sheetJson = sheetReader.ToJson();
请记住,要使此代码正常工作:
  • 标题需要在第一行
  • header 名称必须是有效的 JSON 属性名称
  • 您不能有重复的标题名称
  • 标题中不能有任何空白列
  • 关于c# - 使用 LightweightExcelReader 将 Excel 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66975389/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com