Большинство отчетов и печатных форм в системах 1С:Предприятие представляют собой табличные документы. Часто возникает необходимость сохранять их на жесткий диск в различных форматах, в том числе в формате книги Microsoft Excel. В данной статье мы рассмотрим два случая: сохранение одного табличного документа в файл Excel и сохранение нескольких табличных документов в один файл Excel, при этом каждый табличный документ будет располагаться на отдельном листе.
Сохранение одного табличного документа в файл Excel
Для сохранения табличного документа в файл Excel нам понадобится имя файла.
Вызов диалога сохранения файла описан в этой статье. А здесь описано как вызвать этот диалог асинхронно. В новых версиях конфигураций 1С:Предприятие рекомендуется использовать асинхронные методы.
Кроме того, можно получить имя временного файла в формате *.xlsx.
1 |
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx"); |
Итак, у нас есть имя файла и есть сформированный табличный документ. Сохранение в формате Excel выполняется следующим образом:
1 |
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX); |
Кстати, здесь можно выбрать и другие форматы сохранения.
Сохранение нескольких табличных документов в один файл Excel
Для сохранения нескольких табличных документов в один файл Excel по одному документу на листе нам потребуется сначала сохранить каждый табличный документ в отдельный файл. При этом один файл будет итоговым, а остальные — временными. К итоговому файлу мы будем присоединять листы из временных файлов. Итоговый файл у нас будет содержать тот табличный документ, лист которого должен идти первым в списке.
Допустим, у нас уже есть имя итогового файла и массив имен временных файлов. Тогда программный код будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
Попытка Эксель = Новый COMObject("Excel.Application"); Исключение Предупреждение("У Вас на компьютере не установлен Microsoft Excel."); Возврат; КонецПопытки; //Запускаем Excel в скрытом режиме и без различных предупреждений Эксель.Visible = 0; Эксель.DisplayAlerts = 0; //Пытаемся открыть итоговый файл Попытка ИтоговыйФайл = Эксель.Workbooks.Open(ИмяИтоговогоФайла); Исключение Сообщить("Файл не найден"); Эксель=0; Возврат; КонецПопытки; //Переименуем первый лист итогового файла ИтоговыйФайл.Worksheets(1).Name = "Имя первого листа итогового файла"; //Начинаем присоединять файлы из массива временных файлов Для Счетчик=0 По МассивВременныхФайлов.Количество()-1 Цикл ДанныеФайла = МассивВременныхФайлов[Счетчик]; //Открываем временный файл ВременныйФайл = Эксель.Workbooks.Open(ДанныеФайла.ИмяФайла); //Копируем лист из временного файла в итоговый, указываем номер листа в итоговом файле, //после которого нужно вставить новый ВременныйФайл.Worksheets(1).Copy(,ИтоговыйФайл.Worksheets(Счетчик+1)); //Задаем имя присоединенного только что листа ИтоговыйФайл.Worksheets(Счетчик+2).Name = "Имя присоединенного листа"; //Закрываем временный файл ВременныйФайл.Close(0); КонецЦикла; //Сохраняем и закрываем итоговый файл ИтоговыйФайл.Save(); ИтоговыйФайл.Close(-1); Эксель = 0; //Подчищаем за собой Для каждого Эл из МассивВременныхФайлов Цикл УдалитьФайлы(Эл.ИмяФайла); КонецЦикла; |