Выгрузка в эксель несколько табличных документов
По теме из базы знаний
- Выгрузка в несколько листов/файлов Excel в УФ
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Умная маршрутизация: о сложностях интеграции с 1С (часть 2)
- Быстрая выгрузка в Excel с оформлением (числа, даты, колонтитулы, гиперссылки) через OpenXML
- Загрузка данных из табличного документа/ Excel с произвольным кодом обработки строк
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну или скидывать в одну папку и собирать макросом, как в https://www.extendoffice.com/documents/excel/456-combine-multiple-workbooks.html
Click Developer > Visual Basic, a new Microsoft Visual Basic for applications window will be displayed (or press Alt+F11), click Insert > Module
Sub GetSheets()
Path = "C:\Users\dt\Desktop\dt kte\"
Filename = Dir(Path & "*.xls*")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub
ПоказатьThen click "play" button to run the code
Вот мое творение :)
Процедура Кнопка1Нажатие(Кнопка)
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
Текст = "ru = ""Таблица XLSX""; en = ""XLSX table""";
Фильтр = НСтр(Текст)+"(*.XLSX)|*.XLSX";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.Заголовок = "Выберите путь для сохранения";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
Иначе
Текст = "Путь сохранения не выбран!";
Предупреждение(Текст);
Возврат;
КонецЕсли;
Файл1 = ПолучитьИмяВременногоФайла("xlsx");
Файл2 = ПолучитьИмяВременногоФайла("xlsx");
Файл3 = ПолучитьИмяВременногоФайла("xlsx");
Файл4 = ПолучитьИмяВременногоФайла("xlsx");
Excel = Новый COMОбъект("Excel.Application");
ЭлементыФормы.ДокументРезультат_Сокр.Записать(Файл1,ТипФайлаТабличногоДокумента.XLSX);
ЭлементыФормы.РезультатДокументы.Записать(Файл2,ТипФайлаТабличногоДокумента.XLSX);
ЭлементыФормы.РезультатАкты.Записать(Файл3,ТипФайлаТабличногоДокумента.XLSX);
ЭлементыФормы.РезультатШтрафыПоОплате.Записать(Файл4,ТипФайлаТабличногоДокумента.XLSX);
Книга1 = Excel.Workbooks.Open(Файл1);
Книга2 = Excel.Workbooks.Open(Файл2);
Книга3 = Excel.Workbooks.Open(Файл3);
Книга4 = Excel.Workbooks.Open(Файл4);
Лист1 = Книга1.WorkSheets(1);
Лист2 = Книга2.WorkSheets(1);
Лист3 = Книга3.WorkSheets(1);
Лист4 = Книга4.WorkSheets(1);
Книга = Excel.WorkBooks.Add();
Лист1.Copy(Книга.Sheets(1));
Книга.Sheets(1).Name = "Расчеты";
Лист2.Copy(Книга.Sheets(2));
Книга.Sheets(2).Name = "Курсы";
Лист3.Copy(Книга.Sheets(3));
Книга.Sheets(3).Name = "Акты";
Лист4.Copy(Книга.Sheets(4));
Книга.Sheets(4).Name = "Штрафы";
Excel.Worksheets("Лист1").Delete();
Excel.Worksheets("Лист2").Delete();
Excel.Worksheets("Лист3").Delete();
Попытка
Книга.SaveAs(ПутьКФайлу);
Сообщить("Файл сохранен! "+ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
КонецПопытки;
Excel.Workbooks().Close();
Excel.Application.Quit();
УдалитьФайлы(Файл1);
УдалитьФайлы(Файл2);
УдалитьФайлы(Файл3);
УдалитьФайлы(Файл4);
КонецПроцедуры
Показать
А если через Хранилище данных реализовать. Сохранить Лист Excel в хранилище ,создав уже нужное количество листов.
И при выгрузке просто указывать на какой лист загружать отчет.
У меня так выгрузки идут в Excel -шаблоны, только я выгружаю результат запроса и сразу массивом. Очень быстро идет загрузка, через COMSafeArray("VT_VARIANT", КоличествоКолонок, КоличествоСтрок);
И при выгрузке просто указывать на какой лист загружать отчет.
У меня так выгрузки идут в Excel -шаблоны, только я выгружаю результат запроса и сразу массивом. Очень быстро идет загрузка, через COMSafeArray("VT_VARIANT", КоличествоКолонок, КоличествоСтрок);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот