Скопировать диапазон ячеек одной книги Excel в другую книгу Excel - C#

Узнай цену своей работы

Формулировка задачи:

Из темы все ясно... Не могу разобраться никак. Можно ли открыть одну книгу, скопировать диапазон куда-нибудь, потом открыть другую книгу... и т.д. Или открыть сразу 2 книги... И куда копировать? В массив? В общем, все что я делала, не получилось. Прошу помощи. Вопрос прост. Есть 2 книги Excel. Нужно скопировать диапазон ячеек из одной книги в другую.

Решение задачи: «Скопировать диапазон ячеек одной книги Excel в другую книгу Excel»

textual
Листинг программы
            int RowCount = 0; //последний столбец, мне нужен был для копирования неск книг в 1
            Excel.Application ObjWorkExcel = new Excel.Application(); //сам эксель
            Excel.Workbook WB; //в эту книгу будем копировать
            Excel.Worksheet WS;// в этот лист
            Excel.Workbook ObjWorkBooks;// из этой книги будем копировать
            Excel.Worksheet ObjWorkSheets;//с этого листа
            WB = ObjWorkExcel.Workbooks.Add(System.Reflection.Missing.Value);//создаем новую книгу
            WS = (Excel.Worksheet)WB.Sheets[1];//выбираем 1 лист
            ObjWorkBooks = ObjWorkExcel.Workbooks.Open("C:\\1.xlsx",
            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //открываем существующую книгу
            ObjWorkSheets = ObjWorkBooks.Worksheets[1];//берем 1 лист
            int LastRow = ObjWorkBooks.Sheets[1].Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row; // находим в ней последнюю строку, можно заменить на известный номер
            string Name = "A1:E" + LastRow.ToString(); //берем диапазон ячеек от а1 до е+последняя строка
            string Adress = "A" + RowCount.ToString() + ":E" + (RowCount + LastRow - 1).ToString();//формируем адрес куда в существующей книге мы это скопируем
            ObjWorkSheets.get_Range(Name).Copy(); // копи
            WS.get_Range(Adress).PasteSpecial(); // паст
            RowCount = RowCount + LastRow;//добавляем счетчик для столбцов, при копировании 1 раз не нужен
            ObjWorkBooks.Close(false, Type.Missing, Type.Missing);//закрываем книгу из которой копировали

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы