Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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# 将对象[,]强制转换为字符串[]_C#_Excel Interop - Fatal编程技术网

C# 将对象[,]强制转换为字符串[]

C# 将对象[,]强制转换为字符串[],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

我有一个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    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;你不能在两者之间转换。构建一个新的字符串数组并复制值。