В EhLib всегда была возможность экспорта содержимого DBGridEh в MS Excel. Но EhLib версии 9.4 была дополнена новым классом TXlsMemFileEh, который не привязан к DBGridEh и является настоящим генератором файлов в формате MS Excel. Т.е. при желании используя TXlsMemFileEh можно создавать XLSX-файлы на основании любых данных.
Для меня главным преимуществом этой версии экспорта является то, что он с поразительной точностью может воспроизводить MultiTitle-шапку таблицы. Смотрите на DBGridEh:
Для меня главным преимуществом этой версии экспорта является то, что он с поразительной точностью может воспроизводить MultiTitle-шапку таблицы. Смотрите на DBGridEh:
и на результат экспорта:
"Одно лицо"! И для этого нужно написать всего несколько строк (код взят из EhLib\Demos\XlsFileEh\Unit2.pas):
Причиной моего интереса к этому функционалу является то, что когда-то подобный экспорт DBGridEh, но через OLE, я реализовывал в одном из проектов. В том проекте любая табличка должна была уметь выгружаться в Excel и если не было специальных шаблонов, то был использован универсальный экспорт. Теперь всю кучу моего кода, написанную тогда, можно было бы не писать...var TitleMarix: TDBGridMultiTitleExportNodeMatrixEh; ci, ri: Integer; ti: TDBGridMultiTitleExportNodeEh; begin ... CalcMultiTitleMatrix(DBGridEh1, TitleMarix); for ci := 0 to Length(TitleMarix)-1 do begin for ri := 0 to Length(TitleMarix[ci])-1 do begin ti := TitleMarix[ci, ri]; if (ti <> nil) then begin Sheet.Cells[ci, ri + 1].Value := TitleMarix[ci, ri].Text; if (ti.MergeColCount > 0) or (ti.MergeRowCount > 0) then begin Sheet.MergeCell(ci, ri + 1, ti.MergeColCount, ti.MergeRowCount); end; end; end; end; FreeMultiTitleMatrix(TitleMarix);
Интересно, спасибо, жаль картинки не подгружаются(
ОтветитьУдалитьДа не, извиняюсь, что дернул. Картинки из этого поста у меня не отображались просто (из рф). Только сейчас догадался через VPN попробовать) Спасибо за пост, и вообще за блог. Наткнулся случайно, читал взахлёб) EhLib последний, да))
ОтветитьУдалить