Здравствуйте!
Просьба помочь с выгрузкой из 1С в Excel.
Проблема такова: есть форма отчета, которая содержит несколько страниц. В каждой странице есть свои ПолеТабличногоДокумента. При выгрузке в Excel надо, чтобы данные страницы сохранились в один файл.
Что сделано: сделана выгрузка в один файл с именем страниц вместо листов в Excel.
Теперь надо чтобы данные с ПолеТабличногоДокумента грузились в данные листы. Заполнять каждую ячейку
Лист.Cells(1, 1).Value таким образом невозможно, т.к. таблицы огромные и объемные.
Есть ли функция которая перекидывает весь ТабДок в Лист Excel?
Заранее спасибо за помощь!
(1) как уже написали есть простой метод. Вместо 2 сделать 1!
И вопрос решен!
Ну если нужно велосипед писать, то не вижу проблемы перебрать второй лист и перенести его на первый. Но тут нужно знать синтаксис работы с Эксель.
Если есть общий табличный документ, то что мешает его записать записать в формате excel?
или нужно, чтобы каждая страница из формы отчета на отдельной странице в общем excel была?
(2) Общего ТабДока нет. Есть отдельные страницы на форме. Например, ТабДок1, ТабДок2, ТабДок3.
И эти страницы должны быть перенесены в общую книгу Excel с листами ТабДок1, ТабДок2, ТабДок3. по нажатию кнопки.
(4) делал как-то такую штуку для отчетов, отправляемых контрагенту. Типа описывался пакет отчетов, потом они формировались, сохранялись в xls(x). Дальше алгоритм такой: создается новый объект через СОМ для экселя, в него добавляется страница, именуется, в нее вставляется файл. http://www.forum.mista.ru/topic.php?id=615419
(7) с помощью метода Copy скопировать отдельные файлы в листы - это слишком долго. Конечно данная версия рассматривалась. Но именно так мне не надо. Мне надо одной кнопкой выгрузить в excel все мои страницы.
(7) Проблема решилась именно таким образом. Создание временных файлов и в дальнейшем копирование в один эксель.
Пример кода прилагаю, может кому поможет:
Попытка
// Загрузка объекта Microsoft Excel
Состояние("Выгрузка данных из 1С в Microsoft Excel...");
ExcelПриложение = Новый COMОбъект("Excel.Application");
ExcelПриложение2 = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Ошибка при запуске Microsoft Excel."
+ Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;
WorkBook = ExcelПриложение.WorkBooks.Add();
Для каждого Элемент из ЭтаФорма.ЭлементыФормы цикл
Если Тип(Элемент) =Тип("ПолеТабличногоДокумента") тогда
ТДок = Элемент;
Первый = Истина; // у нас уже есть один лист, надо использовать его
ПрошлыйЛист = Неопределено;
ВрФайл = ПолучитьИмяВременногоФайла("xls");
Элемент.Записать(ВрФайл, ТипФайлаТабличногоДокумента.XLS);
Книга = WorkBook.Worksheets.Add();
Книга.Application.Sheets(1).Name = Элемент.Имя;
мКнига = ExcelПриложение2.Workbooks.Open(ВрФайл);
мКнига.Application.Sheets(1).Cells.Select();
ExcelПриложение2.Selection.Copy();
Если Первый Тогда // Используем созданный автоматически
НовыйЛист = Книга.Application.Sheets(1);
ExcelПриложение.DisplayAlerts = 0;
Попытка
НовыйЛист.Paste();
Исключение
КонецПопытки;
ExcelПриложение.DisplayAlerts = 1;
Первый = Ложь;
Иначе // добавляем новый
НовыйЛист = Книга.Application.Sheets.Add(, ПрошлыйЛист); // Добавляем новый лист после прошлого
КонецЕсли;
ExcelПриложение2.DisplayAlerts = 0;
мКнига = ExcelПриложение2.Workbooks.Close();
ExcelПриложение2.DisplayAlerts = 1;
КонецЕсли;
КонецЦикла;
ExcelПриложение.Quit();
В режиме совместимости 8.3.12 и выше в стандартном функционале появилась возможность сохранять несколько табличных документов в 1 эксель файл, на разные страницы.