C# 将对象[,]强制转换为字符串[]
我有一个excel工作表,返回c中的Interop excel范围。我要做的是将range.Value2转换为[1,1]int[1,2]string[1,3]null,返回rangeVal2。我想知道如何将Interop.range Value2转换为一维字符串数组[] 这是来自手表返回范围。值2C# 将对象[,]强制转换为字符串[],c#,excel-interop,C#,Excel Interop,我有一个excel工作表,返回c中的Interop excel范围。我要做的是将range.Value2转换为[1,1]int[1,2]string[1,3]null,返回rangeVal2。我想知道如何将Interop.range Value2转换为一维字符串数组[] 这是来自手表返回范围。值2 [1, 1] "Somestring" object {string} [1, 2] null object [1, 3] null object [1, 4] null ob
[1, 1] "Somestring" object {string}
[1, 2] null object
[1, 3] null object
[1, 4] null object
[1, 5] 0.0 object {double}
[1, 6] 0.0 object {double}
[1, 7] 0.0 object {double}
不知道你有什么,但试试看
string[] arr = oRngListRow.Value2.Cast<object>()
.Select(x => x == null ? null : x.ToString()).ToArray();
接近你自己评论中的内容
自2015年C 6.0起,这也可以写成:
string[] arr = oRngListRow.Value2.Cast<object>()
.Select(x => x?.ToString()).ToArray();
如果您想要一个空字符串,那么在条目为空对象的情况下,您可以使用字符串插值,这也是因为C 6.0:
string[] arr = oRngListRow.Value2.Cast<object>()
.Select(x => $"{x}").ToArray();
请尝试以下方法。出于某种原因,Excel Interop不喜欢Linq
var list = new List<string>();
for (int i = 1; i <= 7; i++)
{
list.Add((oRngListRow.Cells[1, i].Value2 ?? string.Empty).ToString());
}
我试过:string[]str=newstring[20];System.Buffer.BlockCopyoRngListRow.Value2,1,str,1,20;我还尝试将var obj=oRngListRow.Value2作为IEnumerable;字符串[]arr=obj.Cast.Selectx=>x.ToString.ToArray;你不能在两者之间转换。构建一个新的字符串数组并复制值。