C# 使用LightweightExcelReader将Excel转换为JSON
我有一个Excel文件(.xlsx)和一张工作表,如下所示:C# 使用LightweightExcelReader将Excel转换为JSON,c#,json,excel,C#,Json,Excel,我有一个Excel文件(.xlsx)和一张工作表,如下所示: Name | Age | Country | Nik 17 Switzerland Thomas 28 Kuba Waslim 12 Russia [ { "Name":"Nik", "Age":17, "Country":"
Name | Age | Country |
Nik 17 Switzerland
Thomas 28 Kuba
Waslim 12 Russia
[
{
"Name":"Nik",
"Age":17,
"Country":"Switzerland"
},
{
"Name":"Thomas",
"Age":28,
"Country":"Kuba"
},
{
"Name":"Waslim",
"Age":12,
"Country":"Russia"
}
]
我想将此excel工作表转换为JSON格式
结果应该如下所示:
Name | Age | Country |
Nik 17 Switzerland
Thomas 28 Kuba
Waslim 12 Russia
[
{
"Name":"Nik",
"Age":17,
"Country":"Switzerland"
},
{
"Name":"Thomas",
"Age":28,
"Country":"Kuba"
},
{
"Name":"Waslim",
"Age":12,
"Country":"Russia"
}
]
我想使用这个框架。我知道有一个问题已经问过了,但答案是使用OLEDB,这不应该是最好的做法了。我想用一个更简单、更快的框架来解决这个转换
重要:
行数和列数是动态的,可以变化,但excel工作表的格式在不同工作表之间保持不变
这是我的尝试。正如你所看到的,我没有管理太多,这是非常基本的。我成功地获得了JSON中键的第一行:
var excelReader = new ExcelReader(@"path\to\file\test.xlsx");
var sheetReader = excelReader[0];
IEnumerable<object> keys = sheetReader.Row(1);
var excelReader=new excelReader(@“path\to\file\test.xlsx”);
var sheetReader=excelReader[0];
IEnumerable keys=sheetReader.Row(1);
如何使用LightweightExcelReader框架将Excel工作表转换为JSON格式?LightweightExcelReader在其github自述文件上的状态 如果要将电子表格映射到对象集合,请使用我们的姐妹项目ExcelToEnumerable 他们姐妹项目的示例看起来非常像您要实现的目标。
如果您不介意依赖Newtonsoft JSON,您可以执行以下操作:
公共静态类ExcelJsonExtensionMethods
{
公共静态字符串ToJson(此SheetReader SheetReader)
{
IDictionary HeaderNames=GetHeaderNames(读表器);
var jArray=新的jArray();
while(sheetReader.ReadNext())
{
var jObject=new jObject();
做
{
var propertyName=HeaderNames[新的CellRef(sheetReader.Address).ColumnNumber];
jObject[propertyName]=sheetReader.Value?.ToString();
}while(sheetReader.ReadNextInRow());
jArray.Add(jObject);
}
返回jArray.ToString();
}
专用静态IDictionary GetHeaderNames(SheetReader SheetReader)
{
var headerNames=新字典();
while(sheetReader.ReadNextInRow())
{
headerNames.Add(新的CellRef(sheetReader.Address).ColumnNumber,sheetReader.Value?.ToString());
}
返回头部;
}
}
像这样使用它:
var excelReader=new excelReader(@“path\to\file\test.xlsx”);
var sheetReader=excelReader[0];
var sheetJson=sheetReader.ToJson();
请记住,要使本规范发挥作用:
- 标题必须位于第一行
- 标头名称必须是有效的JSON属性名称
- 您不能有重复的标题名称
- 标题中不能有任何空白列