Создание отчета с использованием Excel

Пример работы с Excel: создание отчета. Использует excel.h

Создание отчета с использованием Excel

Системные констаиты хранятся в файле excel.h
Делаем запись макроса макрорекордером Excel, делаем переопределение логических констант true и false командами #DEFINE true .T., #DEFINE false .F. и исправляем отдельные команды

WITH SELECTION.BORDERS(xledgeleft) в вид
WITH .SELECTION.BORDERS(xledgeleft)

END WITH в вид ENDWITH

* Пример программы рисования таблицы

#include excel.h
#DEFINE true .T.
#DEFINE false .F.
#DEFINE m_fontsize 18
#DEFINE m_fontname "Times New Roman"

IF !USED ("rep2")
SELECT 0
USE rep2
ELSE
SELECT rep2
ENDIF

* получение последнего номера строки
m_rec_kol = RECCOUNT()+1
m_adrsum = m_rec_kol+1

m_d1 = ALLTRIM(STR(m_rec_kol))
m_d2 = ALLTRIM(STR(m_adrsum))

lcolderror = ON("ERROR")
ON ERROR o_excel = .NULL.
o_excel = GETOBJECT( , "Excel.application")
ON ERROR &lcolderror
IF ISNULL(o_excel)
EXPORT TO rep_trener XL5
m_file_xls = SYS(5)+CURDIR()+"rep_trener.XLs"
o_excel = CREATEOBJECT("EXCEL.Application")
o_excel.APPLICATION.VISIBLE = .T.
o_excel.workbooks.OPEN("&m_file_xls")
ELSE
m_box = MESSAGEBOX("Проверте не запущен ли файл REP_TRENER.XLS "+CHR(13)+;

" ", 0+32, "Предупреждение!")
RETURN
ENDIF

WITH o_excel
***************************************************
*!* выделение области таблицы и рисование линий
***************************************************
* выделение области
m_com = [.RANGE("A1:I]+m_d1+[").SELECT]
&m_com
*********************************************
* рисование линий
*********************************************
.SELECTION.BORDERS(xldiagonaldown).linestyle = xlnone

.SELECTION.BORDERS(xldiagonalup).linestyle = xlnone
WITH .SELECTION.BORDERS(xledgeleft)
.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
ENDWITH
WITH .SELECTION.BORDERS(xledgetop)
.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
ENDWITH
WITH .SELECTION.BORDERS(xledgebottom)
.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
ENDWITH
WITH .SELECTION.BORDERS(xledgeright)

.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
ENDWITH
WITH .SELECTION.BORDERS(xlinsidevertical)
.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
ENDWITH
WITH .SELECTION.BORDERS(xlinsidehorizontal)
.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
ENDWITH
*********************************************
* автоматическое выравнивание
*********************************************

.cells.SELECT
.SELECTION.COLUMNS.autofit

*!* суммирование EXCELом
m_range = [.RANGE("I]+m_d2+[").SELECT]
m_summir = [.activecell.VALUE ="=SUM(I2:I]+m_d1+[)"]
&m_range
&m_summir
*********************************************
* убрать Грид линии
*********************************************
.activewindow.displaygridlines = false

* смена заголоаков
.RANGE("I1").SELECT
.activecell.formular1c1 = "Cумма"
.RANGE("G1").SELECT
.activecell.formular1c1 = "Цена продукции"

.RANGE("F1").SELECT
.activecell.formular1c1 = " Цена склада "
* смена формата данных
.COLUMNS("I:I").SELECT
.SELECTION.numberformat = "0.00"

.RANGE("A1:I1").SELECT
WITH .SELECTION
.horizontalalignment = xlcenter
.verticalalignment = xlcenter
.wraptext = true
.ORIENTATION = 0
.shrinktofit = false
.mergecells = false
ENDWITH
*********************************************
* центровка заголовка документа
*********************************************

.RANGE("A1:I1").SELECT
.SELECTION.INSERT
.SELECTION.merge
WITH .SELECTION
.horizontalalignment = xlcenter
.verticalalignment = xlbottom
.wraptext = false
.ORIENTATION = 0
.shrinktofit = false
.mergecells = true
ENDWITH

*********************************************8
* заголовок всего документа
*********************************************
.RANGE("A1").SELECT
.activecell.VALUE = " Заголовок таблицы "
* смена типа и размера и шрифта

.RANGE("A1").SELECT
WITH .SELECTION
.FONT.NAME = m_fontname
.FONT.SIZE = m_fontsize
ENDWITH

* .sheets(1).SELECT
.sheets.ADD

.sheets(1).SELECT
.sheets(1).NAME = "Тренер"
.sheets("rep_trener").SELECT
.sheets("rep_trener").NAME = "Тренер_222"
.RANGE("I10:I20").SELECT

ENDWITH

o_excel.APPLICATION.VISIBLE = .T.
oexlchart = CREATEOBJECT("EXCEL.CHART")
oexlchart.chartwizard(oexlchart.PARENT.sheets(2).RANGE("I10:I20") ,,,2)

* oexlchart.chartwizard(oexlchart.parent.sheets(2).RANGE("I10:I13") ,,,2)
oexlchart.APPLICATION.VISIBLE = .T.

A.Пинигин, СБОРНИК прибамбасов для VFP по материалам конференций, литературы и собственных разработок. г. Рига E-mail: apinigin@olainfarm.lv

Автор: A.Пинигин

Автор публикации

не в сети 1 неделя

Joys

Комментарии: 2Публикации: 177Регистрация: 25-06-2000
Материалы по теме
Оставить комментарий
//////////////// ///////////////
Авторизация
*
*
Генерация пароля