efox.gif (1606 bytes)Для разработчиков VFP

Работа с Excel

Инструментальные средства "EvnFox"

EvnFox home

Vallmind home

indbul1a.gif (440 bytes) Объекты Grid в диалоговых списках и проводниках могут экспортировать данные в Excel. Если при перемещении мышки над заголовками слолбцов Grid появляется панелька с кнопкой Excel grid_panel.gif (1072 bytes), то Grid позволяет это сделать.

indbul1a.gif (440 bytes) Можно писать формы отчетов в Excel подобно редактору отчетов FoxPro подобно.

excel_report_form.gif (16034 bytes)

EvnFox имеет функцию

= E_EXCEL_Report(m.Form,m.ToFile,m.For,m.ExcelApp,m._Repeat_Columns)

в eproclib.prg , которая позволяет на основе такой формы сгенерить книгу с данными.

В любом поле формы может быть указано выражение FoxPro помещенное между символами ^

Кроме того, можно писать функции на языке Visual FoxPro. Для этого текст в ячейке должен начинаться со слова FUNCTION . Так как в Excel появятся проблемы с несколькими строками в одной ячейке, то можно обозначать в теле функции переход на следующую строку символами \n  . Программа сама заменит их на перевод строки при компиляции текста функции.

В столбце А до сотой строки должны быть определены области отчета:

Area=range Вся область отчета
Header=range Область заголовка отчета
PageHeader=range Область заголовка страницы
Details=range Область строк отчета
Totals=columns Перечень порядковых номеров столбцов, по которым подводить итоги
Group=columns Перечень порядковых номеров столбцов, по которым группировать

Мултитабличные формы Excel

    Форма с определённой областью Details удобна тем, что нет ограничений на тип результата выражения в ячейке. Он может быть разным для разных ячеек одного столбца. Но! Заполнение области Details происходит медленно из-за необходимости обращения с COM объёкту для заполнения каждой ячейки.

    Существует другой путь вывода данных из таблиц миссий на лист Excel. Этот способ:

Если вы захотите использовать более быстрый способ вывода данных, то сначала удалите определение Details из формы.

Для вывода текущего алиаса отчёта используется синтаксис: TABLEFAST=Range  . Можно просто заменить Details на TABLEFAST , например TABLEFAST=A5:G7

Если нужно вывести где-то рядом ещё одну таблицу, например из алиаса RC , то сначала укажите в нужном месте формы отчёта выражения ячеек с данными из области RC. Указать можно или под другой таблицей, или в стороне. Например:

Здесь одна таблица расположена под другой. При этом обратите внимание, что для первой таблицы ширина области в TABLEFAST указана с избытком, но так, чтобы она включала полностью столбцы второй таблицы. Иначе вторая таблица будет разорвана при сдвиге вниз. Выражение для вывода данных алиаса RC :

TABLEFAST=D11:F11;ALIAS=RC;FLOAT

То есть. Через ; можно указать:

    Кроме этого можно задать любые свойства ячеек Excel для области таблицы. Для этого используется директива PROPERTY=... и знание структуры объекта RANGE Excel. Свойства и значения перечисляются через #

Так для указания цвета текста и фона можно указать:

TABLEFAST=D11:F11;ALIAS=RC;FLOAT;PROPERTY=FONT.COLOR=RGB(255,0,0)#INTERIOR.COLOR=RGB(200,200,255)

А вообще у объекта Range есть много свойств и методов. Коллекция Borders , например, позволяет определить рамки (Borders(1).Weight = 1 или Borders(2).Weight=3, ...)

Важный момент! Если вы хотите расположить под выводимой таблицей строку с формулами, то нужно сделать следующее:

Только при соблюдении данных правил строка с формулами правильно сдвинется вниз и области формул растянутся на всю таблицу.

Так в следующем примере

получим такой результат

    Есть ещё один важный момент! При выводе таблицы директивой TABLEFAST Dataodyssey Express сначала создаст внутри курсор, заполнит его результатами выражений в ячейках, и быстро выведет на лист. Но! Dataodyssey Express не всегда правильно может определить размеры полей курсора по первой строке данных, и в последующих строках данные могут быть усечены. Потому существует возможность указать размерность полей принудительно. Это можно сделать:

indbul1a.gif (440 bytes). Еще одна функция из eproclib.prg позволяет строить графики в Excel из итоговых отчетов:

= E_Excel_Chart(m.Chart,m.ChartAlias,m.SourceAlias,m.ValueExpr,m.Where,m.oAccess,m.Title,m.From,m._OnAxes)


См. в интернет:    Долина разума    Система учета "Events"     Рассчеты с населением за газ    Предприниматель     Инструментальные средства "EvnFox"    www.vallmind.ru    EasySQL4Fox    ECalcPad    VMZipper    Святая трезвость    Трезвая Россия