|
Работа с Ексель | ☑ | ||
---|---|---|---|---|
0
bard666
05.05.21
✎
15:43
|
Здравствуйте! Возник вопрос по работе с Ексель. Ситуация такая. Есть макет екселя, в который необходимо выгружать данные из базы. В нем зашиты формулы и макросы. Реализовано через макет двоичных данных в обработке.
Имя файла не статическое. Формируется, исходя из выгружаемых данных. И ещё момент: файл можно сразу сохранить в выбранный пользователем каталог, либо открыть (предварительный просмотр) и сохранить. Если вкраце, то код такой: ВременныйКаталог = КаталогВременныхФайлов(); ПолноеИмяФайла = = ?(ВыводимСразу, КаталогВыбранныйПользователем, ВременныйКаталог) + ИмяФайла; Попытка Если IsWindows() Тогда Excel = Новый COMОбъект("Excel.Application"); КонецЕсли; Исключение ТекстОшибки = "Ошибка при запуске Microsoft Excel: " + ОписаниеОшибки() + Формат(ТекущаяДатаВремя(), "ДЛФ=DT"); БВ_СлужебныеПроцедуры.ВыводСообщений(ТекстОшибки); Возврат; КонецПопытки; Макет = ПолучитьМакетСервер(); Макет.Записать(ПолноеИмяФайла); Книга = Excel.Workbooks.Open(ПолноеИмяФайла); Далее код заполнения екселя. И после сохраняем или выводим на экран. Если ПредварительныйПросмотр Тогда Excel.Visible = True; Иначе Книга.SaveAs(ПолноеИмяФайла); Excel.Quit(); КонецЕсли; Если работаем через предварительный просмотр, то файлы из временного каталога не удаляются. Можно ли изменить код через функцию ПолучитьИмяВременногоФайла("xls") Если делать только сохранение в каталоге, то я понимаю как исправить, но как сделать временный файл и переименовать, показать и не забыть удалить его потом? Буду рад свежим идеям. |
|||
1
Kassern
05.05.21
✎
15:48
|
(0) "Если работаем через предварительный просмотр, то файлы из временного каталога не удаляются" - либо удаляй сам, либо жди когда программа перезапустится.
"Если делать только сохранение в каталоге, то я понимаю как исправить", что исправить то? В чем проблема? |
|||
2
mistеr
05.05.21
✎
15:59
|
(0) Нужно сохранять сразу в указанный каталог, открывать и показывать (если нужен просмотр). Временных файлов не создавать. О лишних файлах в целевом каталоге пользователь сам позаботится.
|
|||
3
Cthulhu
05.05.21
✎
16:00
|
Если ПредварительныйПросмотр Тогда
//Excel.Visible = True; ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ПолноеИмяФайла); ТабДок.Показать(ПолноеИмяФайла); Иначе Книга.SaveAs(ПолноеИмяФайла); Excel.Quit(); КонецЕсли; |
|||
4
mistеr
05.05.21
✎
16:02
|
(3) Насколько я понимаю, просмотр без формул смысла не имеет.
|
|||
5
Cthulhu
05.05.21
✎
16:13
|
(4): вычислятся при чтении.
|
|||
6
lodger
05.05.21
✎
16:13
|
(0) в таком ключе, альтернатив нет.
если у тебя уже разрисованный шаблон и его надо открыть, то только временный файл, который ты будешь потом ловить и удалять по возможности. либо сохраняй сразу в указанный каталог, а юзер сам удалит лишнее. либо напиши на 1с код создания таблицы экселя со всеми макросами и листами. |
|||
7
mistеr
05.05.21
✎
16:20
|
(5) Или я не понял тебя, или ты не понял (0).
|
|||
8
bard666
05.05.21
✎
16:42
|
Всем огромное спасибо за помощь. Решил просто добавить пару строчек при открытии, чтобы находил файлы по маске и удалял из временного каталога.
|
|||
9
mistеr
05.05.21
✎
16:44
|
(8) Надеюсь, ловишь при этом исключения? Это может оказаться чужой открытый файл.
|
|||
10
bard666
05.05.21
✎
16:46
|
(3) Через табличный документ не прокатит. В екселе три листа необходимо заполнить.
|
|||
11
bard666
05.05.21
✎
16:48
|
(9) Не учел. Спасибо. Ситуация маловероятна, т.к. работа ведется на компе локально, но файл может быть открыт.
|
|||
12
Cthulhu
05.05.21
✎
18:23
|
(10): грузи в три таб.документа.
загрузил стартовый - вывел по областям в каждый отдельный таб.документ и показал их. или три раза загрузил - удалил лишние области - показал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |