@spark36
Полная комплектация: 2 руки, 2 ноги, голова, мозги

Как объединить несколько листов Excel файла в один?

В общем суть такова в эксель файле около 100 листов, в каждом листе необходимо скопировать определенный кусок и вставить все в другой экселевский файл в одном листе, у меня получился такой нерабочий говнокод

class Program
    {
        static void Main(string[] args)
        {
            Excel.Application input = new Excel.Application();
            Excel.Application output = new Excel.Application();
            input.Workbooks.Open(@"C:\Users\sharov\Desktop\main.xls");
            output.Workbooks.Open(@"C:\Users\sharov\Desktop\temp.xlsx");
            Excel.Worksheet outSheet = (Excel.Worksheet)output.ActiveWorkbook.Worksheets[1];
            int i = 1;
            foreach (Excel.Worksheet sheet in input.ActiveWorkbook.Worksheets)
            {
                Excel.Range excelcells = sheet.get_Range("J7","DW63");
                foreach(Excel.ListRow row in excelcells)
                    outSheet.Rows[i++] = row;
            }

            input.Quit();
            output.ActiveWorkbook.Saved = true;
            output.Quit();
        }

    }
  • Вопрос задан
  • 1217 просмотров
Решения вопроса 1
@Sumor
Во-первых нет необходимости открывать два Экселя - открывайте таблицы в одном и работайте с ними. Workbooks.Open как раз возвращает вам объект Workbook.

У исходного выбираете Range и делаете Copy
В результирующем переходите в конец и делаете Paste или PasteSpetial.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Gorily
@Gorily
Раньше работал с документами через Microsoft.Office.Interop.Excel, мне не понравилось. На каждый документ по экземпляру Excel в памяти, всё туго ворочается, непонятные ошибки.
Сейчас использую EPPlus, мне хватает с головой. Посмотрите тут: https://epplus.codeplex.com/, https://github.com/ylatuya/EPPlus
Примеры тут: https://epplus.codeplex.com/wikipage?title=FAQ&ref...
Библиотека интуитивно понятная.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы