2014-02-12 96 views
-2

我有一个Excel表格,它返回c#中的Interop Excel范围。我想要做的是将range.Value2作为rangeVal2返回为[1,1] int [1,2] string [1,3] null。我想知道我怎么可以转换Interop.range值2到一个维字符串数组[] 这是从手表返回Range.Value2Casting object [,] to string []

[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} 
+0

我试过了: string [] str = new string [20]; System.Buffer.BlockCopy(oRngListRow.Value2,1,str,1,20); – AC25

+1

我也试着var obj = oRngListRow.Value2作为IEnumerable ; string [] arr =(obj).Cast () .Select(x => x.ToString()) .ToArray(); – AC25

+0

你不能*在两者之间施放*。构建一个新的字符串数组并复制这些值。 –

回答

1

不知道你有什么,但尽量

string[] arr = oRngListRow.Value2.Cast<object>() 
    .Select(x => x == null ? null : x.ToString()).ToArray(); 

接近你在你自己的评论中有什么。

0

请尝试以下操作。出于某种原因,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()); 
     }