2014-02-12 131 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()); 
     }