Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#互操作将JSON值添加到工作表_C#_Json_Excel_Vsto - Fatal编程技术网

C#互操作将JSON值添加到工作表

C#互操作将JSON值添加到工作表,c#,json,excel,vsto,C#,Json,Excel,Vsto,如何从JSON对象中获取所有值,然后立即将它们显示到工作表中 这就是我的JSON对象的外观: {"report_suites": [ { "rsid": "op-api-docs", "site_title": "API Docs Portal" }, { "rsid": "op-bigideas", "site_title": "Big Ideas" }, { "rsid": "op-education", "site_tit

如何从
JSON
对象中获取所有值,然后立即将它们显示到工作表中

这就是我的
JSON
对象的外观:

{"report_suites": [
  {
    "rsid": "op-api-docs",
    "site_title": "API Docs Portal"
  },
  {
    "rsid": "op-bigideas",
    "site_title": "Big Ideas"
  },
  {
    "rsid": "op-education",
    "site_title": "Education"
  },
  {
    "rsid": "op-education-dev",
    "site_title": "Education - Dev"
  },
  {
    "rsid": "op-global",
    "site_title": "Global"
  },
  {
    "rsid": "op-global-dev",
    "site_title": "Global - Dev"
  }
]}
预期结果:

这就是我试图完成此操作的方式,但它返回以下错误:

与“System.Collections.Generic.List.AddRange(System.Collections.Generic.IEnumerable)”匹配的最佳重载方法具有一些无效参数

dynamic response=JsonConvert.DeserializeObject(responseXml);
var just_rs=response.report_suites;
var报告标题=新列表();
var报告_id=新列表();
foreach(仅包含可变项目){
报告标题。添加范围(项目。现场标题);
报告id添加范围(项目rsid);
}
rng=(Excel.Range)ws.Range[ws.Cells[2,1],ws.Cells[report_id.Length,1];
rng.Value=报告id;
rng=(Excel.Range)ws.Range[ws.Cells[2,2],ws.Cells[report_title.Length,2];
rng.Value=报告标题;
其中,
response
是上面提到的我的
JSON
对象

如果我使用
Add
而不是
AddRange
我会得到以下错误:

与“System.Collections.Generic.List.Add(string)”匹配的最佳重载方法具有一些无效参数


item.site\u title
不是字符串,但您正在尝试将其添加到
string

如果我正确地回忆起JSONVERT to a
dynamic
会导致JArray/JObject/JToken,那么您可能需要查看确定
项.site\u title
是什么类型,并查看其将值提取到
字符串的适当方法


至于使用
AddRange()
方法,您确定这是您想要使用的吗?您正处于试图添加单个元素范围的循环中。我想你是想用
Add()
来代替。确定类型并转换为字符串后,使用
Add()
方法。

按如下方式将数据添加到列表中:
report\u title.AddRange(item.site\u title.ToString()),但现在尝试在工作表中设置数据时失败,在
rng.Value=report\u id上从HRESULT:0x800A03EC
返回
异常。。。你知道为什么吗?试着用一个固定的名称来表示:
rng.Value=ws.Parent.Parent.Transpose(report\u title.AsEnumerable().ToArray())
作为旁注,如果这些是您希望在代码中操作的值,您可能希望创建一个表示数据的类,以便轻松地序列化/反序列化
dynamic response = JsonConvert.DeserializeObject(responseXml);
var just_rs = response.report_suites;
var report_title = new List<string>();
var report_id = new List<int>();
foreach(var item in just_rs) {
    report_title.AddRange(item.site_title);
    report_id.AddRange(item.rsid);
}
rng = (Excel.Range)ws.Range[ws.Cells[2, 1], ws.Cells[report_id.Length, 1]];
rng.Value = report_id;
rng = (Excel.Range)ws.Range[ws.Cells[2, 2], ws.Cells[report_title.Length, 2]];
rng.Value = report_title;