FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9112
Вход
Генератор отчетов в Excel (v 2.7)

Класс ,для построения отчетов в Microsoft Excel c использованием OLE Automation


 
Прислал: Банщиков Евгений   Категория: Отчеты


Обновления генератора отчетов ( http://updateapp.narod.ru/tools.html )
=================
Новое в вер 2.7
================

1. Добавлено свойство Composit_On_One_Sheet
2. Добавлен параметр lRest в метод Clear_group
3. Добавлен метод Fit_Column
4. Добавлено свойство IsExcelDemo для поддержки возможности работы с неактивированным excel 2007
5. Добавлена поддержка интерфейса excel.application для 2007 офиса
6. Исправлены баги
 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.731) Вложение [513.99]kb
Дополнения пользователей
Генератор отчетов в Excel (v 2.7)
[+][?]
Николай Моругин
16.07.02 12:22:57

Все классно, только осталось, по моему мнению, добавить многострочные детали. Мне, например это
нужно для формирования отчета по проводкам:
      субконто1      субконто1  
 Дт   субконто2  Кт  субконто2
      субконто3      субконто3
может подскажите где поковырять, чтобы появилась такая возможность?
Евгений
16.07.02 16:40:14

Многострочный Detal вещь хорошая, но требует прорисовки каждой строки отчета,а следовательно
приведет к неприемлемому увеличению времени создания отчета.
Николай Моругин
31.07.02 08:39:15

в ехеле есть CHR(10) (альт+ентер) который переводит строки в ячейке. Может как-то это использовать?
Евгений
31.07.02 09:40:18

To: Николай Моругин
Вышли мне пример своего отчета в xls на E-Mail
 

Романов Д.
04.12.02 18:50:24

Мне понравилось! Только не доконца понял: -Источником данных должен быть SQL-запрос с Order by? Я
пытался использовать собственный курсор с индексом. Все работает только порядок группировки не
учитывает наличие индекса...
Подскажите как это обойти
Евгений
04.12.02 21:08:25

Так как передача данных в Exel выполняется через временный
файл одной командой ,а не построчным сканированием ,то для сортировки можно исползовать только sql
с 'order by'или другие команды изменяющие порядок записей физически (напр. sort ).Отсюда же
следует запрет на relation с другими таблицами.


Романов Д.
17.12.02 14:43:39

В VFP 7.0 SP 1, столкнулся с такой проблемой:
При создании exe возникает ошибка : Class can not be instantiated because Member 
'APPEVENTS_SheetFollowHyperlink' does not exit. 
После того как коментирую конструкцию 
define class ExcelEvents as session olepublic
 implements AppEvents in 'excel.application' (обработка событий) ошибка проподает. Не подскажите в
чем проблема?


Евгений
17.12.02 17:51:31

Проблема в том ,что у тебя Excel очевидно ,более старшей версии ,чем 97. Если тебе не требуется
перехватывать события  Excel,закоментируй описание интерфеиса. В противном случае придется
дописать отсутствующие события.
Романов Д.
14.08.03 09:57:29

Здравствуйте! Теперь использую Ваш класс как основное средство разработки отчетов. Спасибо. Очень
нравится :)
Вопрос: можно ли при создании перекрестных отчетов использовать группировки? 
Романов Д.
14.08.03 11:09:52

В предыдущем вопросе уже разобрался :)
Встретил один ньюанс: при создании отчета используются 2 таблицы er_xtab и c_list. У меня
наименования полей в выборке были более 10 символов, а так как вышеперечисленные таблицы являются
свободными, то без сообщения об ошибке происходит урезание полей до 10 символов.
Вячеслав
23.04.04 07:23:34

Незаменимая вещь, спасибо за творение.
Однако при использовании oEReport.NoShowReport=.t.
не считаются итоги в группах, а очень надо.
Евгений Банщиков
23.04.04 19:05:09

>Однако при использовании oEReport.NoShowReport=.t.
>не считаются итоги в группах, а очень надо.
NoShowReport не влияет на расчет итогов.
Слишком мало информации для того,чтобы чего нибудь посоветовать. Опишите подробности на Email
,возможно порешаем вашу проблемму.
Гюли
30.04.04 12:13:11

Евгений, большое спасибо! Как только узнал про этот класс, попробовал, и теперь только его и
использую. Пока замечаний нет.
Вячеслав
28.06.04 09:52:01

Опять я, с группами разобрался. Теперь не могу вставить гиперссылку на какой - нибудь веб узел.
Это возможно? Это так нужно. Но даже без этого класс супер.
Евгений Банщиков
28.06.04 15:03:41

To Вячеслав :
Никогда с гиперссылками в Excel проблем не было.
Идем в Меню: Вставка -> Гиперссылка ,
или в своиствах картинки задаем гиперссылку.
См. также  пример отчета "Прайс-лист"
Гиперссылку можно задать также для ячейки ,правда не знаю работает ли это для версии более ранних
чем XP.
Вячеслав
29.06.04 03:06:55

Не получается гиперссылка с использованием шаблона, если ее вставлять в раздел Detal, туда где
поля начинаются со *
Евгений Банщиков
30.06.04 08:48:25

Статическую гиперссылку можно вставить в detal через рисунок или shape, динамическую сделать
сложнее ,но не невозможно . Правда придедся немного попрограммировать.

Шумеев Сергей
21.12.04 20:49:04

4. Добавить изображение в отчет

add_picture(nRow, nCol, cFile, [lLockAspectRatio], [nHeight], [nWidth])

Если cFile  - BMP(как в примере), то работает.

Если cFile  - TIF(руками в EXCEL возможно), то НИЧЕГО не происходит.

Может что-то не то делаю?

Или Файлов TIF в этом решении нет?

Евгений Банщиков
25.12.04 13:42:55

To : Шумеев Сергей
Для вставки картинки используется обычная VBA команда
oWorkSheet.Pictures.Insert(cFileName)
Поэтому если работает руками , должно работать и программно.
Попробуй сделать вставку через VBA ,если не получится , то тут уже ничего не поделаешь. 

Шумеев Сергей
05.01.05 11:26:51

Картинку командой 
oWorkSheet.Pictures.Insert(cFileName)
вставил.
Но нужно задать размеры, какие она должна занять на листе 
Excel.
Вот этого не смог сделать.

Еще вопрос.
Как в отчете Excel, который создается из VFP для поля типа
L задать какую-либо картинку в зависимости от значения TRUE или FALSH.
usa
09.12.05 17:24:24

А можно ли как-то малой кровью подпилить класс для того чтобы можно было экспортировать отчеты в
OpenOffice?
Евгений Банщиков
10.12.05 08:14:07

to usa
Малой кровью не получится. 
Объектная модель OpenOffice сильно отличается от модели Excel.

YZH
19.12.05 20:39:57

Добрый день Евгений, 
Я использую всего несколько дней данное творение!
я в восторге пользователи тоже!

возникло желание, формировать отчеты в виде ФАЙЛОВ!
Т е при формировании отчета МНЕ СОВЕРШЕННО нет необходимости
показывать его на экран
Более того программа по идее должна просто создавать 
отчеты ночью и складывать в виде файлов

пробовал по описанию !

NoShowReport =.t.  – Не  открывать отчет после создания . Отчет  выводится в файл .
FullName  -содержит полное имя файла ,для отчетов ,с NoShowReport=.t.

Шикарно все формирует!
файли падают куда налдо и я их рассылаю по E-MAIL



I_One
27.01.06 01:19:55

Здравствуйте Евгений. Вот вчера скачал ваш генератор шаблоноа в EXEL.
Стал его изучать и сразу появилось пара вопросов:
1)На некоторых отчетах вылетает ошибка "Member VBE dose not evaluate to an object" 
при загрузке VBA модулей. С чем это может быть связано?
2)Я что то не смог найти: есть ли возможность выводить итоговые цифры для выборочных групп или 
если хочешь выводить итог. цифры то выводи для всех групп. Или может я что то не так делаю.
Поясните мне пожалуйста эти вопросы.
Заранее спасибо.
borman
08.02.06 15:07:40

Добрый день Евгений. Постоянно используем Ваш класс, все просто великолепно... При некоторой
сноровке разруливает просто тупиковые ситуации! Огромное спасибо за новоявленный хелп и
руководство!!!
Aries
10.04.06 12:50:35

Приветствую Евгений.
Вот решил использовать ваш генератор.
И нарвался на такую штуку. В отчете используются такие переменные nIndex. У меня в таблицах тож
есть такое поле, причем символьное и из-за этого полетели ошибки. Поставил перед переменной везде
m. (m.nIndex) ошибка ушла. Думаю стоит поправить это в генераторе.
Далее написал в ячейке такое выражение
IIF(EMPTY(*cDate),DTOC(*dDate),ALLTRIM(*cDate))
это в разделе Detal 
При генерации на строке
Copy To (cFileName) Field &cFldlist Type &cCopyType
Заменил на
Copy To (cFileName) Type &cCopyType
И от ошибки избавился. Вопрос такой - это баг или я 
просто не правильно сделал. Если не правильно, то как правильно?
Aries
10.04.06 13:04:00

А Женя, если можна твой ICQ (мой 143983622)
Заходи, у меня есть еще вопрос.
dimag
02.06.06 14:05:59

Баг-репорт:
Ругается при: 1. отсутствие какого-либо значения в колонке строки PgHead 2. при наличие в колонке
строки PgHead знака "#".
И было бы замечательно, если бы было более детальное описание причин ошибки. Я потратил довольно
много времени пока "допер", что дело в вышеуказанных багах
dimag
02.06.06 14:06:26

Баг-репорт:
Ругается при: 1. отсутствие какого-либо значения в колонке строки PgHead 2. при наличие в колонке
строки PgHead знака "#".
И было бы замечательно, если бы было более детальное описание причин ошибки. Я потратил довольно
много времени пока "допер", что дело в вышеуказанных багах
dimag
02.06.06 14:06:35

Баг-репорт:
Ругается при: 1. отсутствие какого-либо значения в колонке строки PgHead 2. при наличие в колонке
строки PgHead знака "#".
И было бы замечательно, если бы было более детальное описание причин ошибки. Я потратил довольно
много времени пока "допер", что дело в вышеуказанных багах
dimag
02.06.06 14:09:12

какие-то проблемы с отображением и почему-то мое имя поменялось. растроевание сообщений произошло
в результате рефреширования экрана Мозиллы. Ник - dimag не мой, не знаю почему он вылез. Cashey
SD
23.08.06 15:01:41

Евгений ! 

Пробую строить диаграммы в EXCEL c использованием вашей программы.
Столкнулся со следующими проблемами.

1. Как правильно запустить приложение с примерами.
   Смог запустить только переписав файлы из поддиректорий в  директорию, из которой стартует
example.app.

2. В примерах example.app не нашел построения диаграмм.

3. В примере, который в Help

  a) Требует открыть  в текущей рабочей области таблицы
      Какие таблицы нужно открыть ?

  б) Если открыть свои таблицы
      Не найден шаблон отчета stat_sale.xls

  c) Если создать  stat_sale.xls далее идут ошибки в e_report.prg


Можно ли как-то увидеть работающий пример построения диаграмм ?

Евгений Банщиков
23.08.06 15:27:19

To SD
Для запуска достаточно развернуть архив в любой каталог и из этого каталога запустить приложение с
примерами
По графикам в примерах смотри "Пример перекрестного отчета 1"
Также читай хелп по этой теме
SD
31.08.06 19:48:53

 Евгений ! 

Спасибо за подсказку.

Делаю как в Вашем примере

   .add_chart('',1,'','Название',.t.,2)

&& Из описания
Второй параметр

  nPlotBy - порядок данных(1 или 2)	  

Как я понимаю 
1 - ряды в строках
2 - ряды в стобцах

В шаблоне диаграммы Dept задано "ряды в строках".


Программа на изменение второго параметра никак не реагирует.
Диаграмму строит ряды в столбцах

Может что-то не так делаю ? 
SD
31.08.06 20:02:35

* Создаю отчет без шаблона
 oEReport=createo('e_report',lcPathFileFormat,,3,lcNameReport,2)
 if type('oEReport')='O'

  oEReport.add_column('*TAG_RUS' ,'Название Поля-Тег',25,0,.F.,,,8)
  oEReport.add_column('npp','N п/п ',3,0,,'~1')

  oEReport.add_column('*DlnSim' ,'Длина',6,0)
  oEReport.add_column('*Letter_XLS' ,'Буква в EXCEL',5,0)
  oEReport.add_value(1,1,lcNameReport,.t.,.f.,.t.,15)

DO CASE
 CASE Variant=1 && отчет не показывать
  oEReport.make_report(.T.)
!! Отчет содзается в нужном месте, но при этом держит процесс, т.е. не дает себя открыть  в EXCEL
!! Вид отчета как COPY TO &lcPathFileFormat TYPE XL5  

 CASE Variant=2
  oEReport.make_report(.F.)
!! Отчет показывает
!! Усли просто закрыть EXCEL, вид отчета как COPY TO &lcPathFileFormat TYPE XL5
!! Если в EXCEL сохранить как, то сохраняет в нужном виде(с шапкой и названием колонок)

ENDCASE
endif

Как сохранить отчет в указаном файле в НУЖНОМ виде (с шапкой и названием колонок) ?
Евгений Банщиков
02.09.06 07:03:49

To Sd
Вообще лучше по этим вопросам пиши мне на Mail
Здесь для таких обсуждений не лучшее место

По Диаграмам : 
В чем твоя проблемма понять трудно
Шли мне тестовый пример (Шаблон отчета , Dbf строк на 10-15 и   prg для теста) , тогда скажу
точно

По 2 вопросу:
make_report с параметром .t. предназначен совсем для другой цели , это в основном ручная дозаточка
отчета методами OLE.

Тебе нужно использовать своиство NoShowReport
Ну и конечно lcNameReport должен содержать полное имя с путями , типа c:\reportdir\myreport.xls,
иначе файл будет создан в моих документах

 oEReport=createo('e_report',lcPathFileFormat,,3,lcNameReport,2)
 if type('oEReport')='O'

  oEReport.add_column('*TAG_RUS' ,'Название Поля-Тег',25,0,.F.,,,8)
  oEReport.add_column('npp','N п/п ',3,0,,'~1')

  oEReport.add_column('*DlnSim' ,'Длина',6,0)
  oEReport.add_column('*Letter_XLS' ,'Буква в EXCEL',5,0)
  oEReport.add_value(1,1,lcNameReport,.t.,.f.,.t.,15)

DO CASE
 CASE Variant=1 && отчет не показывать
  oEReport.NoShowReport=.t.
 CASE Variant=2
  oEReport.NoShowReport=.f.

ENDCASE
  oEReport.make_report()

endif


usa
30.09.06 09:40:49

EReport не работает с Office System 2007 :(
Евгений Банщиков
30.09.06 09:51:12

to usa
Опиши поконкретней ,в чем же выражается эта "не работа", желательно на mail :al_fa@mail.ru
Sane4eK
12.06.07 23:35:42

Здравствуй Евгений у меня есть вопрос: какое используется свойство или метод для объединения ячеек
в Excel
Sane4eK
13.06.07 12:02:50

Здравствуй Евгений у меня есть вопрос: какое используется свойство или метод для объединения ячеек
в Excel
Евгений Банщиков
13.06.07 14:05:01

To Sane4eK
У ячеек есть свойство MergeCells :
Range("D4:E6").MergeCells=.t.
Но с такими вопросами лучше выходи на форум. Здесь Обсуждается специфика конкретногго решения.
anelsasha
26.07.07 08:54:30

"Объектная модель OpenOffice ... Малой кровью не получится...." 
.... прошло 2 года ... М.б. что-то изменилось в этом плане...
SD
11.11.07 22:28:03

Евгений !

Посмотрите пожалуйста на

http://forum.foxclub.ru/read.php?29,300181,301553#msg-301553
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика