我试图从Excel工作表中获取数据并将其复制到txt文件中。我成功获取数据但唯一的问题是如何以这种格式解析它(json格式):
{
"First sheet": {
"A": {
"1": "The content of A1",
"3": "The content of A3"
},
"B": {
"1": "The content of B1",
"2": "The content of B2",
"7": "The content of B7"
},
"C": {
"1": "The content of C1",
"2": "The content of C2",
"7": "The content of C7"
},
"AA": {
"98": "The content of AA98"
}
},
"2nd sheet": {
"D": {
"4": "Content of D4 in 2nd sheet",
"6": "56",
"7": "2.3"
}
}
}
我的意思是,我如何在此层次结构中创建对象? (对象内对象内的对象......):
"First sheet": {
"A": {
"1": "The content of A1",
p.s:我尝试创建对象并用以下方法解析它们: var json = new JavaScriptSerializer()。Serialize(sheets [0])
答案 0 :(得分:0)
你可以在这里查看http://json2csharp.com/它为json生成课程大多数时候都不完美但通常会有很多帮助。
答案 1 :(得分:0)
您要做的是称为序列化/格式化。 Parse正在使用字符串并将其置于结构中。
定义这些类:
public class Root : SortedDictionary<string, Sheet>
{
}
public class Sheet : SortedDictionary<string, Row>
{
}
public class Row : SortedDictionary<string, string>
{
}
安装nuget包newtonsoft.json
然后你就可以:
Root myRoot;
//copy data to myRoot
string serialized = JsonConvert.Serialize(myRoot);
唯一的问题是它们将按照密钥进行排序,而不是按照我接受或不接受的文件顺序排序。
答案 2 :(得分:0)
虽然我确信至少有一个库可以帮助您完成此操作,但如果您从左右和自上而下阅读电子表格数据,则可以自行轻松完成此操作。如果是这样,我建议使用类似以下逻辑的Dictionary对象:
对于每张工作表,请执行以下操作:
a。实例化词典以保存行信息。
b。对于每一行,请执行以下操作:
c。将行信息字典添加到工作表信息字典中,并将工作表名称作为键。
序列化工作表字典应该能为您提供所需的结果。