Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Отчеты в екселе
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, может кто знает, как сделать так: данные формируются в программе, а вид отчета нарисован в екселе, при нажатии кнопки в программе открывается отчет из екселя, в котором данные из программы. Честно говоря, сама не совсем поняла, что сказала. И какие существуют компоненты для отчетов в экселе из делфи5. За раннее благодарна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2002, 01:11 |
|
||
|
Отчеты в екселе
|
|||
|---|---|---|---|
|
#18+
Ссылка внизу нерабочая, а Афалина шаривари ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2002, 01:16 |
|
||
|
Отчеты в екселе
|
|||
|---|---|---|---|
|
#18+
пардон, разабралась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2002, 01:19 |
|
||
|
Отчеты в екселе
|
|||
|---|---|---|---|
|
#18+
Excel можно использовать как Automation Server, т.е. вы можете управлять приложением Excel из Delphi, причем точно так же как это бы делалось из самого Excel на VBA. Почитайте литературу и посмотрите примеры по OLE Automation ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2002, 07:21 |
|
||
|
Отчеты в екселе
|
|||
|---|---|---|---|
|
#18+
Конечно можно использовать Excel как Automation Server, можно ещё написать VBScript который формирует отчёт, но это достаточно геморройно. А вот продукт от Афалины т.е. XL REPORT весьма приятная штука, правда бесплатный без исходников, а за исходники платить надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2002, 11:01 |
|
||
|
Отчеты в екселе
|
|||
|---|---|---|---|
|
#18+
я делаю это так: Private Excel, Sheet: variant Проверяем не запущен ли Excel ++++++++++++++++++++++++++++++ function Tmtrglav.ExistExcel(FileNameXLS: string):Variant; var VarExcel: variant; iWb, CountWb: Integer; begin try try VarExcel:=GetActiveOleObject('Excel.Application'); CountWb:=VarExcel.Workbooks.Count; for iWb:=1 to CountWb do begin if VarExcel.Workbooks[iWb].Name=FileNameXLS then begin VarExcel.Worcbooks[iWb].Close; repeat until VarExcel.Workbooks.Count<CountWb; CountWb:=VarExcel.Workbooks.Count; end{if}; end{for}; Result:=VarExcel; except Result:=CreateOleObject('Excel.Application'); end{try}; except MessageDlg('На компьютере отсутствует Microsoft Excel.',mtError,[mbOk],0); Result:=null; end{try} end{func}; ++++++++++++++Вызов NewFileOt:=ExtractFilePath(Application.ExeName) +'XLS\'+'my.xls'; Excel:=ExistExcel(NewFileOt); if VarIsNull(Excel) then exit; Excel.visible:=true; Excel.Workbooks.Open(NewFileOt); Sheet:=Excel.Sheets; Ну а дальше примерно так: ADOQuery1.First; while not ADOQuery1.Eof do begin Sheet.Cells[Row,1] := FieldByName('cod').AsInteger; Sheet.Cells[Row,2] := FieldByName('тфьу').AsString; ADOQuery1.Next end; ну и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2002, 07:05 |
|
||
|
Отчеты в екселе
|
|||
|---|---|---|---|
|
#18+
2matveev: Ты кстати очень не грамотно делаешь присваи значения ячейкам таким способом: Sheet.Cells[Row,1] := FieldByName('cod').AsInteger; Sheet.Cells[Row,2] := FieldByName('тфьу').AsString; Это самый медленный способ, конечно если мало данных то бог с ним, но набольших объёмах замедление будет большим, гораздо проще сделать так, т.е. бежишь по датасету и присваишь значения полей некоему двумерному массиву, а затем это массив присваишь диапазону (RANGE) твоего екселевского отчёта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2002, 09:09 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32044747&tid=2119892]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 267ms |

| 0 / 0 |
