Класс TExcelReport

Вернуться к оглавлению

Этот класс предназначен для формирования отчётов в виде Excel-документов. Данный способ не претендует на какую-либо скорость или особые возможности и нацелен, в основном, на удобство написания кода. Обеспечивается совместимость с MS Office 97.

Компонент разрабатывался для Delphi 5, но работает так же и в Delphi 6, и должен работать в Delphi 7. В более поздних версиях Delphi и его клонов не тестировался.

Подробное описание

Свойства и методы времени исполнения класса TExcelReport, доступные из программы.

Имя свойства / Объявление метода Тип Только чтение Начальное значение свойства Описание
WorkSheet Variant R/W   Книга Excel. Прежде чем, работать с объектом класса, требуется присвоить этому объекту уже открытую или
созданную книгу MS Excel.
function NewWorksheet: Variant;       Создаёт новую книгу Excel в том же документе и делает её текущей.
function SelectWorksheet( idx: Integer ): Variant;       Выбирает в качестве текущей книгу с заданным индексом.
DefaultFrame Integer R/W   Значения маски для обозначения рамки по умолчанию: 15 - все края, 1 - левый, 2 - правый, 4 - верхний, 8 - нижний края
FrameWidth Integer R/W   Толщина рамки.
procedure FrameCells( x1, y1, x2, y2: Integer; w: Integer );       Обрисовывает рамку вокруг указанного прямоугольника ячеек (от x1:y1 до x2:y2).
NextCellFontBold Boolean R/W   Следующая форматируемая ячейка (или группа ячеек, форматируемая одним вызовом), будет иметь утолщенный шрифт, если присвоить этому свойству значение TRUE.
NextCellFontItalic Boolean R/W   Следующая ячейка - курсивом.
NextCellFontUnderline Boolean R/W   Следующая ячейка - шрифт подчеркнут.
procedure Cell( x1, y1, x2, y2: Integer; const Text: String; Frames: Integer = -1;
TextAlign: TAlignment = taCenter; ForceText: Boolean = FALSE );
      Форматирует ячейку или группу ячеек (в этом случае они объединяются). Если параметр Frames = -1 (или не задан), то используется DefaultFrame. При ForceText = TRUE, устанавливается атрибут "текст" для поля, это следует использовать для того, чтобы Excel не пытался воспринимать информацию как число или дату.
procedure CellRight( szx, szy: Integer; const Text: String;
Frames: Integer = -1;
TextAlign: TAlignment = taCenter; ForceText: Boolean = FALSE );
      Создаёт новую ячейку справа от предыдущей.
szx и szy - размеры ячейки в клетках Excel.
procedure CellDown( szx, szy: Integer; const Text: String;
Frames: Integer = -1;
TextAlign: TAlignment = taCenter );
      Создаёт новую ячейку ниже предыдущей.
procedure CellOffset( offx, offy, szx, szy: Integer; const Text: String;
Frames: Integer = -1;
TextAlign: TAlignment = taCenter );
      Создаёт новую ячейку по смещению offx, offy относительно левой верхней клетки предыдущей ячейки.
VerticalAlignment Integer R/W   Выравнивание текста по вертикали (для далее формируемых ячеек).
0 - по верхнему краю;
1 - по центру;
2 - по нижнему краю.
В отличие от NextCellXXXX, значение не сбрасывается после формирования очередной ячейки методами CellXXXX.
procedure ColWidth( x, w: Integer );       Устанавливает новую ширину для колонки.
procedure WrapText( x1, x2: Integer );       Устанавливает перенос по словам для диапазона колонок от x1 до x2.
procedure PageOrientation( orientation: Integer );       Устанавливает ориентацию страницы для печати.
Внимание: при отсутствии в системе установленного принтера возникает исключение с выдачей системного сообщения об отсутствии принтера.
procedure Zoom( z: Integer );       Устанавливает масштаб для печати (в процентах).
При отсутствии в системе установленного принтера по умолчанию вызывает ошибку.
 

  Пример использования:
var Excel, WB, WS: Variant; // Приложение Excel, книга Excel, лист книги Excel.
    ER: TExcelReport;       // Класс форматирования 
    FileName: String;       // Имя файла для сохранения (расширение .xls).
..............
Excel := CreateOleObject( 'Excel.Application' );
WB := Excel.Workbooks.Add;
TRY
    WS := WB.ActiveSheet;
    ER := TExcelReport.Create;
    TRY
        ER.Worksheet := WS;
        ER.NextCellBold;
        ER.Cell( 1, 1, 1, 1, 'Hello!' );
    FINALLY
        ER.Free;
    END;
    WB.SaveAs( FileName );
FINALLY
    WB.Close;
    WS := Unassigned;
    Excel := Unassigned;
END;

 


(C) by Vladimir Kladov, 2000-2010