Приклади стандартних дій в 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;