Как поместить массив в диапазон Excel - PullRequest
0 голосов
/ 29 августа 2011

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

, это мой диапазон

 Excel.Range ServiceName = (Excel.Range)_sheet.get_Range(_sheet.Cells[38, "B"] as Excel.Range, _sheet.Cells[45, "B"] as Excel.Range);

_ServiceName - это список, которыйсодержит 1,2,3,4,5,6

for (int i = 0; i < _ServiceName.Count; i++)
            {
                ServiceNameArray[0, i] = _ServiceName[i];

            }

Это я пытаюсь написать в Excel, но, как я уже сказал, в книге Excel есть только последний пункт (6)

 for (int i = 0; i < _ServiceName.Count; i++)
            {
                ServiceName.set_Value(Type.Missing, ServiceNameArray[0,i]);
            }

У кого-нибудь есть идея?

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Давиде Пирас прав. И вы делаете там несколько других странных вещей, я могу уточнить по запросу.

Сейчас я просто хочу отметить, что вы можете напрямую присвоить свойство .Value диапазона массиву :

ServiceName.Value2 = _ServiceName.toArray();

Это намного, намного быстрее для больших объемов данных.

(Примечание: если вы хотите сделать то же самое с формулами, по какой-то странной причине вы должны сделать дополнительный шаг (удвоение времени):

range.Formula = array;
range.Formula = range.Formula;

если нет лучшего способа, которым я пока не знаю о .)

1 голос
/ 29 августа 2011

Я вижу, как вы зацикливаетесь на массиве ServiceName, чтобы получать все значения одно за другим, но не видите, как вы меняете фокусированную ячейку внутри диапазона ячеек на каждой итерации цикла.Конечно, я бы сказал, вы видите только последнее значение, потому что вы записываете все значения одно над другим всегда в одном и том же месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...