Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 июл 2022, 22:51

Выгрузка в Excel

Автор magnifico61, 07 дек 2017, 17:32

0 Пользователей и 1 гость просматривают эту тему.

magnifico61


&НаКлиенте
Процедура СохранитьМногостраничныйФайл(ИмяФайла, СоответствиеЛистов) Экспорт

Попытка

Х = ПолучитьCOMОбъект("", "Excel.Application");

Исключение

Сообщить("Не найдено приложение MS Excel. Файл не записан.");
Возврат;

КонецПопытки;

Х.SheetsInNewWorkbook = 1; 

    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);

    Книга = Х.Workbooks.Open(ИмяФайла);

    Первый = Истина;
    ПрошлыйЛист = Неопределено;

    Для Каждого мЛист Из СоответствиеЛистов Цикл

        // Сохраняем табличный документ во временный файл
        ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
        ТабДок = мЛист.Значение;
        ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLSX);

        Х.CutCopyMode = False; // Сбрасываем старое копирование

        // Копируем первый (единственный) лист временного файла
        мКнига = Х.Workbooks.Open(ИмяВременногоФайла);
        мКнига.Worksheets(1).Cells.Select();
        Х.Selection.Copy();

        Если Первый Тогда // Используем созданный автоматически
            НовыйЛист = Книга.Worksheets(1);
            Первый = Ложь;
        Иначе // добавляем новый
            НовыйЛист = Книга.Worksheets.Add(, ПрошлыйЛист); // Добавляем новый лист после прошлого
        КонецЕсли;

        НовыйЛист.Name = мЛист.Ключ; // Задаём имя
        НовыйЛист.Paste(); // Вставляем содержимое

        // Сбрасываем выделение с добавленного листа
        НовыйЛист.Activate();
        Х.Range("A1").Select();

        ПрошлыйЛист = НовыйЛист;

    КонецЦикла; 

    Х.DisplayAlerts = False;
Книга.Worksheets(1).Activate();

Попытка

Книга.Save();

Исключение

Сообщить("Не удалось сохранить файл!" + Символы.ПС + ОписаниеОшибки());

КонецПопытки;

    Х.Application.Quit();

    Х = Неопределено;

КонецПроцедуры


Код работает прекрасно. Все сохраняется, но при открытии файла, открывается файл с моим наименование в котором один лист и 2 файл с наименованием "Книга1" (2,3,4 и т.д.) в котором нужные листы с данными. И в обоих случаях текст выделен. Как сделать, чтобы открывался один документ со всеми листами и без выделения?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск