Если вы находите нули, возможно, именно поэтому вы получаете ошибку, ответ Марка правильный. Но вы можете использовать эту функцию в другом контексте - непосредственно в качестве функции рабочего листа, предоставляемой Excel-DNA.
Маршалы Excel-DNA очищают ячейки Excel в массив аргументов как объекты типа ExcelDna.Integration.ExcelEmpty. Поэтому, если ваш код вызывается непосредственно из Excel-DNA как функция рабочего листа, вы получите имя типа из ToString (), а не ошибку.
Таким образом, ваша функция с возвращаемым типом, измененным на object [] (Excel-DNA не будет регистрировать вашу функцию string [] напрямую) выглядит следующим образом:
public static object[] MultiToSingle(object[,] multiArray)
{
List<string> tempList;
object[] returnArray;
tempList = new List<string>();
//Add each element of the multi-dimensional Array to the list
foreach (object oneObj in multiArray)
{
tempList.Add(oneObj.ToString());
}
//Convert the list to a single dimensional array
returnArray = tempList.ToArray();
return returnArray;
}
и выдает этот вывод в Excel при вызове непосредственно как функция рабочего листа:
Для этого случая вы можете добавить проверку типа элемента массива для работы с пустыми ячейками:
tempList.Add( oneObj is ExcelEmpty ? "!EMPTY" : oneObj.ToString() );