Галактика и Excel

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Галактика и Excel

Сообщение hope »

Добрый день, ВСЕМ!

Галактика 7.12.
Проблема с Excel и Excel-евскими отчетами из Галактики.
Если у пользователя на компе открыт какой-нибудь файл Excel и из Галактики формируется Excel-евский отчет, то происходит следующее: сначала с рабочего стола пропадает ранее открытый Excel-евский отчет, затем, после завершения формирования отчета в Галактике, на рабочем столе появляются оба отчета (и открытый до формирования отчета в Галактике и сам Галактический Excel-евский отчет). А могут так и не открыться оба отчета.

Видимо, я как-то неправильно открываю Excel-файл? Делаю так:
name_f:='ТовароОборачиваемость.xls';
xlCreateExcel(name_f, true);

Научите, как правильно делать? В чем суть проблемы?

Спасибо!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Невидимы т.к. при инициализации видимость принудительно выставляется в библиотеке 7.12. (Раньше зависело от пар-ра Visible).

Код: Выделить всё

        ExApp.Visible := false;
//  ExApp.Visible := Visible;
// Excel во время сессии всегда скрыт.
Это позволяет в разы ускорить формирование отчета.

Дабы предыдущий не блокировался можно попробовать связку:
1) Function xlOpenNewExcel(Visible : boolean) : boolean;
2) Function xlOpenWorkBook(FileName : shortstring) : boolean;
Не уверен, но возможно что поможет.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Все правильно, Сергей! Все получилось! Спасибо!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Ну и ладушки :)
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Все работало как надо, пока на некоторые компы не установили Excel 2007. Галактика по прежнему 7,12 - в отчетах ничего не меняла.
В результате если у пользователя уже открыт Excel 2007, то при формировании xls-отчета из Галактики открывается еще один Excel. Пользователь сохраняет xls-отчет из Галактики в другой каталог с другим именем, закрывает Excel... и больше не может работать в Excel: ни один файл в Excel больше не открывается. Смотрю в диспетчере задач: там Excel запущен дважды, но ни один из них не отображается в панели задач.... Снимаю эти оба Excel - и работать можно.

Нужен еще какой-то вариант работы с Excel из Галактики в случае, когда уже открыт Excel.
Какие идеи будут?
lStep
Новичок
Сообщения: 28
Зарегистрирован: 27 июл 2006, 16:49

Сообщение lStep »

У меня другая проблемма:
Если при выводе отчета Excel занят диалогом с пользователем (имя файла, формулы), то функции типа xl* возвращают ошибку. И помогает только "переЗайти в Галактику".

Выход: Требую от пользователей закраывать Excel перед запуском таких отчетов.
Неудобно.

Может есть другай метод оживить xl* функции?
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

из доки
есть функция pXL.CreateNewReport(wXLTFileName, True), которая не блокирует работу с Excel во время формирования отчета

сам не разу не пользовался, так может на мысль натолкнет ... есно только 8.1
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

Xlkillexcell почаще вызывайте и будет нормально, а вообще давно пора на 810 перейти
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Насколько чаще использовать Xlkillexcell? Использую только в конце отчета.
Если пользователь закрывает все файлы Excel перед формирование xls-отчета из Галактики - то все отрабатывает корректно.

Скорее перейдут на 1С, чем на 8.1. Очень уж бухгалтера любят 1С, особенно непродвинутые. Решение уже принято: постепенно переходим на 1С.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

а можно и в начале - чтобы прибить все. Если Excel не инициализирован, ничего страшного не будет.
empyros
Постоянный обитатель
Сообщения: 174
Зарегистрирован: 21 май 2009, 20:30
Откуда: Беларусь

Сообщение empyros »

* ПРОБЛЕМА В ПИР: 102.69052
* ПЕРВОЕ РЕШЕНИЕ: 8.10.1.0
* КРАТКОЕ ОПИСАНИЕ: Не блокировать Excel в процессе формирования отчета
* ПРОЕКТ: Отчеты в Microsoft Office Excel
* ДЕТАЛИЗАЦИЯ: Отчеты в XLS в целом
# ЧТО ИЗМЕНЕНО: Во время подготовки отчета в Excel визуализация программы
пропадает и работа с ранее открытыми excel-файлами, не
касающимися подготавливаемого отчета, становится невозможной.

ПРЕДЛАГАЮ: использовать такой способ вызова Excel,
который бы не блокировал работу с Excel во время
формирования отчета.
# КАК ИЗМЕНЕНО: Добавил новую функцию pXL.CreateNewReport(wXLTFileName, True),
которая не блокирует работу с Excel во время формирования отчета
Это в стандартных отчетах уже присутствует? Нужна какая-нибудь регистрация? Или функцию сделали для самописанных отчетов?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Есть функция xlWrapText - которая включает перенос по словам в ячейке.
А есть обратная функция, которая бы этот перенос отменила?
Ответить