![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Окрасить строки в таблице
Daria © (2005-12-13 12:10:00)Привет всем! :))
У меня есть табличка в Excel. Надо, чтобы она открывалась, если в последнем столбце значение отлично от 0, то строка должна окрашиваться в красный цвет. А как это сделать?
msguns (2005-12-13 12:27:00) [21]Может, это поможет:
unit XLReps;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
ComObj, Excel2000, OleServer, DB, Variants;
type
// Выравнивание текста внутри ячейки :
CXLExp_HorAlignment = (ehaLeft,ehaRight,ehaCenter,ehaNone); // горизонтальное
CXLExp_VertAlignment = (evaTop,evaBottom,evaCenter,evaResize,evaMultiLine,evaNone); // вертикальное
// Толщина и наклон символов
CXLExp_FontStyle = (efsBold, efsItalic, efsNone);
SXLExp_FontStyle = set of CXLExp_FontStyle;
CXLExp_BorderStyle = (ebsThin, ebsMedium, ebsThick, ebsBlank);
RXLExp_Text = record
Hor: CXLExp_HorAlignment; // Горизонтальное
Vert: CXLExp_VertAlignment; // Вертикальное
WrdWrap: boolean; // Перенос по словам
end;
RXLExp_Font = record
Name: TFontName; // Название шрифта (если '', то Default
Color: TColor; // Цвет шрифта
Size: ShortInt; // Размер шрифта (если AutoSize=true, игнорируется)
Style: TFontStyles; // Стиль (fsBold,fsItalic,fsUnderline,fsStrikeOut)
end;
RXLExp_CellsProp = record // ******** Свойства ячеек
Align: RXLExp_Text; // Выравнивание текста внутри ячейки
Font: RXLExp_Font; // Фонт
Width: integer; // Ширина ячейки в ед.Excel (если -1, то не уст-ся)
Height: integer; // Высота ячейки в ед.Excel (если -1, то не уст-ся)
Value: OleVariant; // Значение ячейки
Color: TColor; // Цвет фона
// ВАЖНО ! При установке цвета фона следует учитывать, что палитра цветов
// Excel`а существенно отличается от принятого в Windows, что может привести
// к тому, что вместо светло-серого ячейки окрасятся в черный, т.к. полутона
// екселем интерпретируются в полный, насыщенный цвет палитры RGB
end;
RXLExp_Region = record
ColLeft: word; // Колонка начала
RowTop: word; // Строка начала
ColRight: word; // Колонка конца
RowBottom: word; // Строка конца
JoinCells: boolean; // Объединения ячеек (только для региона)
Text: string; // Текст в ячейках
end;
// Открывает Excel-объект
procedure XLExp_OpenReport(TemplateName: OleVariant);
// Закрывает Excel-объект
procedure XLExp_CloseReport;
// Устанавливает свойства ячеек в заданном районе
procedure XLExp_SetCellsProp(Region: RXLExp_Region; CellsProp: RXLExp_CellsProp);
// Возращает объект "Свойства" для указанного района ячеек
procedure XLEXP_GetCellsProp(Region: RXLExp_Region; var CellsProp: RXLExp_CellsProp);
// Задать ширину колонки
procedure XLExp_SetColumnWidth(Col,Width: integer);
// Слить ячейки в одну область
procedure XLExp_MergeCells(Region: RXLExp_Region);
// Запись в указанный район ячеек текста со слитием ячеек, выравниванием по центру
// и заданным размером и типом шрифта
procedure XLExp_CaptionInRange(Region: RXLExp_Region; Txt: string;
FntSize: word; FntStyle: SXLExp_FontStyle; Mrg: boolean);
// Процедура обводит ячейки указанного района листа решеткой заданной ширины
procedure XLExp_DrowBorder(Region: RXLExp_Region; Brd: CXLExp_BorderStyle);
// Занести текст в указанную ячейку
function XLExp_SetDataInCell(Index1,Index2: OleVariant; Data: string):string;
procedure XLExp_DataSetExport(Range:OleVariant; DataSet:TDataSet);
function XLExp_ShowReport: boolean;
function XLExp_GetLastRow(Range:OleVariant; DataSet:TDataSet):integer;
var
XLExp_Report: TExcelApplication;
XLExp_WorkBook: Excel2000.ExcelWorkBook;
XLExp_Sheet: Excel2000.ExcelWorkSheet;
XLExp_Col: array [1..26] of string=('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
implementation
procedure XLExp_OpenReport(TemplateName: OleVariant);
// Процедура создает в первый раз Excel-приложение, а если оно уже существует,
// то коннектится к нему, определяя опции коннекта и создавая объекты "Книга"
// и "Лист". Имя книги задается параметром TemplateName
begin
if not Assigned(XLExp_Report) then
XLExp_Report:=TExcelApplication.Create(nil);
XLExp_Report.ConnectKind:=ckRunningOrNew;
XLExp_Report.Connect;
XLExp_WorkBook:=XLExp_Report.Workbooks.Add(TemplateName,0);
XLExp_Sheet:=XLExp_Workbook.Worksheets.Item[1] as Excel2000.ExcelWorkSheet;
end;
procedure XLExp_CloseReport;
// Процедура закрывет Excel-приложение и освобождает занятые им ресурсы
begin
if Assigned(XLExp_Report) then
begin
XLExp_Sheet:=nil;
XLExp_Workbook:=nil;
FreeAndNil(XLExp_Report);
end;
end;
procedure XLEXP_SetCellsProp(Region: RXLExp_Region; CellsProp: RXLExp_CellsProp);
// Присваивает ячейкам заданного района указанные свойства
begin
with XLExp_Sheet.Range[XLExp_Col[Region.ColLeft]+IntToStr(Region.RowTop),
XLExp_Col[Region.ColRight]+IntToStr(Region.RowBottom)] do
begin
case CellsProp.Align.Hor of
ehaLeft: HorizontalAlignment := xlLeft;
ehaRight: HorizontalAlignment := xlRight;
ehaCenter: HorizontalAlignment := xlCenter;
ehaNone: HorizontalAlignment := xlDefaultAutoFormat;
end;
case CellsProp.Align.Vert of
evaResize: VerticalAlignment := xlGeneral;
evaMultiLine: VerticalAlignment := xlDistributed;
evaTop: VerticalAlignment := xlTop;
evaBottom: VerticalAlignment := xlBottom;
evaCenter: VerticalAlignment := xlCenter;
evaNone: VerticalAlignment := xlDefaultAutoFormat;
end;
WrapText := CellsProp.Align.WrdWrap;
Font.Bold := fsBold in CellsProp.Font.Style;
Font.Italic := fsItalic in CellsProp.Font.Style;
Font.Strikethrough := fsStrikeOut in CellsProp.Font.Style;
Font.Subscript := fsUnderline in CellsProp.Font.Style;
Font.Color := CellsProp.Font.Color;
Font.Size := CellsProp.Font.Size;
if CellsProp.Font.Name>'' then Font.Name := CellsProp.Font.Name;
Interior.Color := CellsProp.Color;
if CellsProp.Width>-1 then Columns.ColumnWidth := CellsProp.Width;
if CellsProp.Height>-1 then Rows.RowHeight := CellsProp.Height;
MergeCells := Region.JoinCells;
if Region.Text>'' then Value := Region.Text;
end;
end;
msguns (2005-12-13 12:16:00) [22]Даша, радость наша, здравствуй, родная !
Для решения твоей проблемы надо ознакомиться с такими объектами Эеселя:
- Ячейка (Cell) вместе со всеми своими свойствами (чтобы "прочитать" ее значение и цвет)
- Массив ячеек (Region) со свойствами (чтобы определить "последний" столбец и "последнюю" строку)