C # - эффективно записывать содержимое файла Excel

2

Я пытаюсь записать содержимое массива в файл excel - от C1 до длины массива.
Что касается темы написания нескольких ячеек сразу, я нашел этот пост, но, как вы можете видеть в моем предыдущем вопросе, такое решение действительно неэффективно. Мне хотелось бы что-то вроде

Excel.Range range = worksheet.Range["A1", "A" + myArray.Length];
range.Value2 = myArray;

Если я это сделаю, приложение выйдет из строя. Не исключение, оно просто становится пустым окном. У вас есть идея, что я должен сделать, чтобы эффективно написать массив в столбце?

ТИА

  • 0
    пожалуйста, предоставьте полный пример, чтобы воспроизвести вашу ошибку
  • 0
    stackoverflow.com/help/mcve
Теги:
excel

1 ответ

1
Лучший ответ

Это довольно неэлегантная и грубая сила, но если вы хотите опираться на сторону Excel/Interop, лучший способ сделать это - вставить массив объектов непосредственно в свойство Value диапазона. Это пример вставки простого массива в столбец:

// just a sample array
int[] array = new int[11] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

object[,] pasteMe = new object[array.Length, 1];
for (int i = 0; i < array.Length; i++)
    pasteMe[i, 0] = array[i];

worksheet.Range["A1", "A" + array.Length].Value2 = pasteMe;

Я думаю, что вам не хватало то, что вам нужен 2d-массив, поскольку диапазоны Excel имеют длину и ширину.

Доказательство:

Изображение 174551

  • 0
    Да, это работает, спасибо. (и это эффективно)
  • 0
    Это не является ни сложным, ни грубым насилием, это предпочтительный способ записать нетривиальные объемы данных в Excel, если вы используете взаимодействие (или даже VBA в Excel).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню