Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Работа с Ексель

Работа с Ексель
Я
   bard666
 
05.05.21 - 15:43
Здравствуйте! Возник вопрос по работе с Ексель. Ситуация такая. Есть макет екселя, в который необходимо выгружать данные из базы. В нем зашиты формулы и макросы. Реализовано через макет двоичных данных в обработке.
Имя файла не статическое. Формируется, исходя из выгружаемых данных. И ещё момент: файл можно сразу сохранить в выбранный пользователем каталог, либо открыть (предварительный просмотр) и сохранить. Если вкраце, то код такой:

ВременныйКаталог = КаталогВременныхФайлов();
ПолноеИмяФайла = = ?(ВыводимСразу, КаталогВыбранныйПользователем, ВременныйКаталог) + ИмяФайла;

        Попытка
        Если IsWindows() Тогда
            Excel = Новый COMОбъект("Excel.Application");
        КонецЕсли;    
    Исключение
        ТекстОшибки = "Ошибка при запуске Microsoft Excel: " + ОписаниеОшибки() + Формат(ТекущаяДатаВремя(), "ДЛФ=DT");
        БВ_СлужебныеПроцедуры.ВыводСообщений(ТекстОшибки);
        Возврат;
    КонецПопытки;
    
    Макет = ПолучитьМакетСервер();
    
    Макет.Записать(ПолноеИмяФайла);
        
    Книга = Excel.Workbooks.Open(ПолноеИмяФайла);

Далее код заполнения екселя.

И после сохраняем или выводим на экран.

Если ПредварительныйПросмотр Тогда
        
        Excel.Visible = True;
        
     Иначе
        
        Книга.SaveAs(ПолноеИмяФайла);
        Excel.Quit();
        

    КонецЕсли;

Если работаем через предварительный просмотр, то файлы из временного каталога не удаляются. Можно ли изменить код через функцию
ПолучитьИмяВременногоФайла("xls")
Если делать только сохранение в каталоге, то я понимаю как исправить, но как сделать временный файл и переименовать, показать и не забыть удалить его потом? Буду рад свежим идеям.
   Kassern
 
1 - 05.05.21 - 15:48
(0) "Если работаем через предварительный просмотр, то файлы из временного каталога не удаляются" - либо удаляй сам, либо жди когда программа перезапустится.
"Если делать только сохранение в каталоге, то я понимаю как исправить", что исправить то? В чем проблема?
   mistеr
 
2 - 05.05.21 - 15:59
(0) Нужно сохранять сразу в указанный каталог, открывать и показывать (если нужен просмотр). Временных файлов не создавать. О лишних файлах в целевом каталоге пользователь сам позаботится.
   Cthulhu
 
3 - 05.05.21 - 16:00
Если ПредварительныйПросмотр Тогда
  //Excel.Visible = True;

  ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ПолноеИмяФайла); ТабДок.Показать(ПолноеИмяФайла);
Иначе
  Книга.SaveAs(ПолноеИмяФайла);
  Excel.Quit();
КонецЕсли;
   mistеr
 
4 - 05.05.21 - 16:02
(3) Насколько я понимаю, просмотр без формул смысла не имеет.
   Cthulhu
 
5 - 05.05.21 - 16:13
(4): вычислятся при чтении.
   lodger
 
6 - 05.05.21 - 16:13
(0) в таком ключе, альтернатив нет.
если у тебя уже разрисованный шаблон и его надо открыть, то только временный файл, который ты будешь потом ловить и удалять по возможности.
либо сохраняй сразу в указанный каталог, а юзер сам удалит лишнее.
либо напиши на 1с код создания таблицы экселя со всеми макросами и листами.
   mistеr
 
7 - 05.05.21 - 16:20
(5) Или я не понял тебя, или ты не понял (0).
   bard666
 
8 - 05.05.21 - 16:42
Всем огромное спасибо за помощь. Решил просто добавить пару строчек при открытии, чтобы находил файлы по маске и удалял из временного каталога.
   mistеr
 
9 - 05.05.21 - 16:44
(8) Надеюсь, ловишь при этом исключения? Это может оказаться чужой открытый файл.
   bard666
 
10 - 05.05.21 - 16:46
(3) Через табличный документ не прокатит. В екселе три листа необходимо заполнить.
   bard666
 
11 - 05.05.21 - 16:48
(9) Не учел. Спасибо. Ситуация маловероятна, т.к. работа ведется на компе локально, но файл может быть открыт.
   Cthulhu
 
12 - 05.05.21 - 18:23
(10): грузи в три таб.документа.
загрузил стартовый - вывел по областям в каждый отдельный таб.документ и показал их.
или три раза загрузил - удалил лишние области - показал.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.