Я пытаюсь программно сгенерировать таблицы Excel для некоторого анализа данных, и я пытаюсь преобразовать использование ячеек [i, j] в использование диапазонов.
Проблема в том, что когда я звонюследующий метод со следующими значениями:
List<string> a = new List<string>() {"a", "b", "c", "d"};
List<string> b = new List<string>() {"aa", "bb", "cc", "dd"};
Wrapper.WriteListInDirection(sheet, a, 1, 1, Direction.Horizontal);
Wrapper.WriteListInDirection(sheet, b, 7, 7, Direction.Vertical);
Тогда вывод в листе Excel использует только 1-е значение в массиве.
У меня есть код ниже. Я проверил строку диапазона, которую я использую для выбора, и передаваемый массив. Поэтому для элемента "a" я получаю в excel "a", "a", "a", "a" в A1: D1и для «б» я получаю «аа», «аа», «аа», «аа» для G7: G10. Тем не менее, переданное значение arr является правильным (для случая "a" это arr это массив [4,1] с 'a', 'b', 'c', 'd' и для 'b' это массив [1], 4] с 'aa', 'bb', 'cc', 'dd').
public static void WriteListInDirection<T>(
Worksheet edo,
IEnumerable<T> items,
int cIndex,
int rIndex,
Direction dir)
{
int iCount = items.Count();
int cEnd = dir == Direction.Horizontal ? cIndex + iCount - 1 : cIndex;
int rEnd = (dir == Direction.Horizontal) ? rIndex : rIndex + iCount - 1;
T[,] arr = new T[cEnd - cIndex + 1, rEnd - rIndex + 1];
if (dir == Direction.Horizontal)
{
for (int i = 0; i < iCount; i++)
{
arr[i, 0] = items.ElementAt(i);
}
}
else
{
for(int i = 0; i < iCount; i++)
{
arr[0, i] = items.ElementAt(i);
}
}
string rStr = string.Format("{0}{1}:{2}{3}",
ConvertColumnNumToLetter(cIndex),
rIndex,
ConvertColumnNumToLetter(cEnd),
rEnd);
Range r = edo.Range[rStr];
r.Value = arr;
}
Так где я все испортил?
Спасибо