Приклади стандартних дій в Excel (додаток)

 

Приклади стандартних дій в Excel

 

        //Функція перетворює адресу клітинки екселю з формату 2,2 в В2

Function ConvertInCell(X,Y:Integer):String;

Const

 Xdef:String='ABCDEFGHIJKLMNOPQRSTUVWXYZ';

 Xcou=26;

Var

 R:String;

Begin

 R:='';

If (X div Xcou)=0 then R:=R+Xdef[X] else

 R:=R+Xdef[X]+Xdef[X mod Xcou];

 Result:=R+IntToStr(Y);

End;

 

         //Процедура реалізує екстренний вихід з екселю

            //Якщо містяться не збережені данні - вони втрачаються

Procedure QuitExcel;

Begin

if not VarIsEmpty(Excel) then

 begin

  Excel.DisplayAlerts := False;//На всі запитання відповідаємо "НІ"

  Excel.Quit; //Виходимо з екселю

  Excel := Unassigned; //Очищуємо змінні

  Sheet := Unassigned;

 end;

End;

 

         //Функція завантаження екселю

Function RunExcel(N:String):Boolean;

Begin

 Excel:=CreateOleObject('Excel.Application');//Звязуємо змінну з екселем

 Excel.Visible := True; //Відображаємо вікно на екрані

 Excel.Workbooks.Add(-4167); //Додаємо порожній документ

 //Якщо замість -4167 буде повне імя збереженої раніше книги - ексель її відкриє

 Sheet := Excel.Workbooks[1].WorkSheets[1];//Запамятовуемо нову сторінку

 Sheet.Name := N;//Даємо назву новій сторінці

 Result:=True;

End;

 

         //Додаемо текст до певної клітинки екселю

Procedure InsertCellValue(X,Y:Integer;N:String);

Begin

 Sheet.Range[ConvertInCell(X,Y)]:=N;

End;

 

            //Форматує текст в клітинці

Procedure FormatFontInCell(X,Y:Integer;B,I,U:Boolean;

                           Color,Size:Integer;Name:String);

Begin

if B then Sheet.Range[ConvertInCell(X,Y)].Font.Bold:=1;

if I then Sheet.Range[ConvertInCell(X,Y)].Font.Italic:=1;

if U then Sheet.Range[ConvertInCell(X,Y)].Font.Underline:=1;

if Color<>0 then Sheet.Range[ConvertInCell(X,Y)].Font.Color:=Color;

if Size<>0 then Sheet.Range[ConvertInCell(X,Y)].Font.Size:=Size;

if Name<>'' then Sheet.Range[ConvertInCell(X,Y)].Font.Name:=Name;

End;

 

            //Вставляє формулу в задану клітинку в форматі ексель

Procedure InsertCellFormula(X,Y:Integer;Formula:String);

Begin

 Sheet.Range[ConvertInCell(X,Y)].Formula:=Formula;

End;

 

            //Маштабує клітинку екселю

Procedure ResizeCell(X,Y,Width,Height:Integer);

Begin

if Height<>0 then Sheet.Range[ConvertInCell(X,Y)].RowHeight:=IntToStr(Height);

if Width<>0 then Sheet.Range[ConvertInCell(X,Y)].ColumnWidth:=IntToStr(Width);

End;

 

            //Додає малюнок на листок екселю

Procedure ExcelInsertPicture(Left,Top,Height,Width:Integer;Name:String);

Begin

 Sheet.Pictures.Insert(Name).Select;

 Excel.Selection.ShapeRange.LockAspectRatio:='0';

if Height<>0 then

 Excel.Selection.ShapeRange.Height:=IntToStr(Height);

if Width<>0 then

 Excel.Selection.ShapeRange.Width:=IntToStr(Width);

if Left<>0 then

 Excel.Selection.ShapeRange.Left:=IntToStr(Left);

if Top<>0 then

 Excel.Selection.ShapeRange.Top:=IntToStr(Top);

End;

 

            //Додає імена стовпців таблиці з заданого початку, та ворматує їх

Procedure ExcelInsertDBHeaders(Left,Top:Integer);

Var

 cl:Integer;

Begin

 For cl:=0 to Form1.DBGrid1.FieldCount-1 do

  Begin

   InsertCellValue(cl+Left,Top,Form1.DBGrid1.Fields[cl].DisplayLabel);

  End;

End;

 

            //Додає данні з таблиці за вказаними координатами

Procedure ExcelInsertDB(Left,Top:Integer);

Var

 cl,row:Integer;

Begin

For row:=0 to Form1.Query1.RecordCount-1 do

 Begin

  For cl:=0 to Form1.DBGrid1.FieldCount-1 do

   InsertCellValue(cl+Left,row+Top,Form1.DBGrid1.Fields[cl].AsString);

  Form1.Query1.Next;

 End;

End;