Преобразование универсального массива в определенный тип

#c# #excel #interop

#c# #excel #взаимодействие

Вопрос:

Я использую Interop для работы с Excel на C #. Мне нужны две ячейки. Вот как я их получаю:

 cells = (Excel.Range)sheet.get_Range("V"   i, "W"   i);
System.Array values = (System.Array)cells.Cells.Value;
  

Это возвращает значения, которые я хочу, как было протестировано с помощью foreach цикла. Но как мне преобразовать элементы в string переменные? Я попробовал это:

 var stringValues = values.Cast<string>();
  

но я никак не могу получить к нему доступ без возникновения ошибки.

Ответ №1:

Простого ConvertAll должно быть достаточно:

 var stringValues = Array.ConvertAll(values, item => (string)item);
  

Ответ №2:

код var stringValues = values.Cast<string>(); пытается преобразовать массив в виде строки. итак, если вы пытаетесь получить в итоге массив строк, вы можете попробовать:

 var stringValues = new List<string>();

values.ToList().ForEach(cellValue=>stringValues.Add(cellValue.ToString());
  

это не укладывается у меня в голове, вероятно, есть более лаконичный способ выразить это

Ответ №3:

Вы можете попробовать:

 values.Select(o => o.ToString());