Разработка приложений MS Excel в Delphi

Создаваемое нами приложение Delphi может получать доступ к объектам Excel несколькими способами. Наиболее распространённые из них: использование объектов Variant и технология ADO.

Я не буду полностью расписывать все примеры того, как можно в Delphi обрабатывать данные из Excel, а просто добавлю исходный код программы, которую создал, делая урок по работе Delphi и Excel. В коде есть комментарии к каждому действию.

Плюс, вы можете посмотреть видео по разработке приложений MS Excel в Delphi

Код из видео:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, COMObj, Vcl.StdCtrls; // Подключаем модуль COMObj для работы с COM-интерфейсами

type
  TForm1 = class(TForm)
    ButtonCreateExcel: TButton;
    ButtonCloseExcel: TButton;
    ButtonopenExcel: TButton;
    ButtonOpenSheet1: TButton;
    ButtonOpenSheetLargo: TButton;
    ButtonOpenSheet2: TButton;
    Edit1: TEdit;
    ButtonAddC3: TButton;
    Edit2: TEdit;
    Button1: TButton;
    ButtonAddFormula: TButton;
    ButtonFillCell: TButton;
    ButtonFillColStr: TButton;
    ButtonCellParam: TButton;
    ButtonCellColParam: TButton;
    procedure ButtonCreateExcelClick(Sender: TObject);
    procedure ButtonCloseExcelClick(Sender: TObject);
    procedure ButtonopenExcelClick(Sender: TObject);
    procedure ButtonOpenSheet1Click(Sender: TObject);
    procedure ButtonOpenSheetLargoClick(Sender: TObject);
    procedure ButtonOpenSheet2Click(Sender: TObject);
    procedure ButtonAddC3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ButtonAddFormulaClick(Sender: TObject);
    procedure ButtonFillCellClick(Sender: TObject);
    procedure ButtonFillColStrClick(Sender: TObject);
    procedure ButtonCellParamClick(Sender: TObject);
    procedure ButtonCellColParamClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  XlApp, WBook, WSheet:OleVariant; // переменные для доступа к объектам MS Excel

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  XlApp:=CreateOleObject('Excel.Application'); // создаём приложение Excel
  XlApp.Visible:=True; // делаем приложение видимым
  XlApp.Workbooks.Add; // создаем рабочую книгу
  WSheet:=XlApp.Worksheets[1];
  WSheet.Activate;
  WSheet.Cells.Item[2,1].Value:=Edit2.Text;
end;

procedure TForm1.ButtonAddC3Click(Sender: TObject);
begin
  XlApp:=CreateOleObject('Excel.Application'); // создаём приложение Excel
  XlApp.Visible:=True; // делаем приложение видимым
  XlApp.Workbooks.Add; // создаем рабочую книгу
  WSheet:=XlApp.Worksheets[1];
  WSheet.Activate;
  WSheet.Range['C3'].Value:=Edit1.Text;
end;

procedure TForm1.ButtonAddFormulaClick(Sender: TObject);
begin
  XlApp:=CreateOleObject('Excel.Application');
  XlApp.Visible:=True;
  XlApp.Workbooks.Add;
  XlApp.ActiveSheet.Range['A5'].Formula:= '=SUM(A1,A2)*5'; // формула - сложить значение ячеек А1 и А2 и умножить результат на 5
end;

procedure TForm1.ButtonCellColParamClick(Sender: TObject);
var
  F:OleVariant; // переменная для идентификации объекта Font
begin
  XlApp:=CreateOleObject('Excel.Application'); // создаём приложение Excel
  XlApp.Visible:=True; // делаем приложение видимым
  XlApp.Workbooks.Add; // создаем рабочую книгу
  WSheet:=XlApp.Worksheets[1];
  WSheet.Activate;
  F:=WSheet.Range['A:A'].Font; // выбираем столбец A и идинтифицируем объект Font
  F.Name:='Arial'; // устанавливаем тип шрифта Arial
  F.Size:=28; // размер шрифта
  F.FontStyle:='Bold'; // стиль
  F.Color:=RGB(255,0,0); // цвет
end;

procedure TForm1.ButtonCellParamClick(Sender: TObject);
begin
  XlApp:=CreateOleObject('Excel.Application'); // создаём приложение Excel
  XlApp.Visible:=True; // делаем приложение видимым
  XlApp.Workbooks.Add; // создаем рабочую книгу
  WSheet:=XlApp.Worksheets[1];
  WSheet.Activate;
  WSheet.Range['B5'].Select; // выбираем ячейку
  XlApp.ActiveCell.Value := 'Это мой текст'; // вводим в неё текст
  XlApp.ActiveCell.Font.Size := 24; // размер шрифта
  XlApp.ActiveCell.Font.FontStyle := 'Bold'; // стиль шрифта
  XlApp.ActiveCell.Font.Name := 'Arial'; // тип шрифта
  XlApp.ActiveCell.Font.Color := RGB(150,0,50); // цвет шрифта
end;

procedure TForm1.ButtonCloseExcelClick(Sender: TObject);
begin
  if not VarIsEmpty(XlApp) then
    XlApp.Quit; // закрываем приложение Excel
end;

procedure TForm1.ButtonCreateExcelClick(Sender: TObject);
begin
  XlApp:=CreateOleObject('Excel.Application'); // создаём приложение Excel
  XlApp.Visible:=True; // делаем приложение видимым
  XlApp.Workbooks.Add; // создаем рабочую книгу
end;

procedure TForm1.ButtonFillCellClick(Sender: TObject);
begin
XlApp:=CreateOleObject('Excel.Application');
XlApp.Visible:=True;
XlApp.Workbooks.add;
XlApp.ActiveSheet.Range['C5'].Select; // делаем активной (выделяем) ячейку C5
XlApp.ActiveCell.Interior.Color:=RGB(0,255,0); // устанавливаем цвет заливки для ячейки
end;

procedure TForm1.ButtonFillColStrClick(Sender: TObject);
begin
XlApp:=CreateOleObject('Excel.Application'); // Создает приложение Excel
XlApp.Visible:=True; // делаем приложение видимым
XlApp.Workbooks.add; // добавляем рабочую книгу
WSheet:=XlApp.Worksheets[1];// делаем активным лист №1
WSheet.Activate;
WSheet.Range['B:B'].Interior.Color:=RGB(0,255,0); // устанавливаем цвет заливки столбца B
WSheet.Range['2:2'].Interior.Color:=RGB(0,0,255); // устанавливаем цвет заливки строки 2
end;

procedure TForm1.ButtonopenExcelClick(Sender: TObject);
begin
  XlApp:=CreateOleObject('Excel.Application');
  XlApp.Visible:=True;
  WBook:=XlApp.Workbooks.Open('d:\\prise.xlsx'); // путь к файлу Excel
end;

procedure TForm1.ButtonOpenSheet1Click(Sender: TObject);
begin
  XlApp:=CreateOleObject('Excel.Application');
  XlApp.Visible:=True;
  WBook:=XlApp.Workbooks.Open('d:\\prise.xlsx'); // путь к файлу Excel
  WSheet:=XlApp.Worksheets[2];  // активизуруем лист 2
  WSheet.Activate;
end;

procedure TForm1.ButtonOpenSheet2Click(Sender: TObject);
begin
  XlApp:=CreateOleObject('Excel.Application');
  XlApp.Visible:=True;
  WBook:=XlApp.Workbooks.Open('d:\\prise.xlsx'); // путь к файлу Excel
  XlApp.Worksheets[2].Activate;
end;

procedure TForm1.ButtonOpenSheetLargoClick(Sender: TObject);
begin
  XlApp:=CreateOleObject('Excel.Application');
  XlApp.Visible:=True;
  WBook:=XlApp.Workbooks.Open('d:\\prise.xlsx'); // путь к файлу Excel
  WSheet:=XlApp.Worksheets['LARGO']; // активизируем лист LARGO
  WSheet.Activate;
end;

end.

Delphi Функции

Функция Abs – предназначена для получения абсолютной величины числа (модуль)

Функция Addr – возвращает адрес переменной, функции или процедуры

Функция AnsiCompareStr – сравнение двух строк на равенство

Функция AnsiCompareText – сравнение двух строк на равенство

Функция AnsiContainsStr – возвращается истина, если строка содержит подстроку

Функция AnsiEndsStr – возвращается истина, если строка заканчивается подстрокой

Функция AnsiIndexStr – сравнивает строку со списком строк, возвращает соответствующий индекс

Функция AnsiLeftStr – извлекает символы с левой стороны строки

Функция AnsiLowerCase – символы верхнего регистра изменяются в строку со строчными буквами

Функция AnsiMatchStr – возвращается истина, если строка точно соответствует какой-либо строке из списка

Функция AnsiMidStr – возвращает подстроку из средних символов строки

Функция AnsiPos – находит позицию одной строки в другой

Функция AnsiReplaceStr – заменяет часть одной строки другой

Функция AnsiReverseString – переворачивает последовательность символов в строке

Функция AnsiRightStr – извлечение символов с правой стороны строки

Функция AnsiStartsStr – возвращает True, если строка начинается с подстроки

Функция AnsiUpperCase – символы нижнего регистра изменяются на символы верхнего регистра

Функция ArcCos – арккосинус числа, возвращается в радианах

Функция ArcSin – арксинус числа, возвращается в радианах

Функция ArcTan – арктангенс числа, возвращается в радианах

Функция Assigned – осуществляет проверку функциональности указателей, объектов, методов

Функция BeginThread – начинает отдельный поток выполнения кода

Функция Bounds – передаёт координаты вершин объекта типа TRect (прямоугольник)

Функция CelsiusToFahrenheit – конвертирует значение температуры из Цельсия в Фаренгейта

Функция ChangeFileExt – изменяет расширение имени файла

Функция Chr – конвертирует целое число в символ

Функция Concat – cоединяет несколько строк в одну

Функция Convert – преобразует одну величину измерения в другую

Функция Copy – создает копию части строки или части массива

Функция Cos – косинус числа

Функция CreateDir – создаёт директорию

Функция CurrToStr – преобразует денежную величину в строку

Функция CurrToStrF – преобразует денежную величину в строку с форматированием

Функция Date – возвращает текущую дату

Функция DateTimeToFileDate – преобразует значение TDateTime в формат date/time формат файла

Функция DateTimeToStr – конвертирует значение даты и времени TDateTime в строку

Функция DateToStr – преобразует значение даты TDateTime в строку

Функция DayOfTheMonth – дает день месяца для значения TDateTime (ISO 8601)

Функция DayOfTheWeek – возвращает индекс дня недели для значения TDateTime (ISO 8601)

Функция DayOfTheYear – выдает день года для значения TDateTime (ISO 8601)

Функция DayOfWeek – выдает индекс дня недели для значения TDateTime

Функция DaysBetween – выдает целое число дней между 2 датами

Функция DaysInAMonth – выдает число дней в месяце

Функция DaysInAYear – выдает число дней в году

Функция DaySpan – выдает дробное число дней между 2 датами

Функция DegToRad – преобразовывает значения градусов в радианы

Функция DeleteFile – удаляет файл, указанный в параметре

Функция DirectoryExists – возвращает True, если указанная директория существует

Функция DiskFree – выдает число свободных байтов на указанном диске

Функция DiskSize – выдает размер указанного диска в байтах

Функция DupeString – создает строку, содержащую копии подстроки

Функция EncodeDate – формирует значение TDateTime из значений года, месяца и дня

Функция EncodeDateTime – формирует значение TDateTime из значений времени и дня

Функция EncodeTime – формирует значение TDateTime из значений часа, минуты, секунды и миллисекунды

Функция EndOfADay – генерирует значение TDateTime, установленное на самый конец дня

Функция EndOfAMonth – генерация значения TDateTime, установленное на самый конец месяца

Функция Eof – возвращает True, если позиция курсора находится в конце файла открытого с помощью Reset

Функция Eoln – возвращает True, если позиция курсора находится в конце строки

Функция Exp – выдаёт экспоненту числа

Функция ExtractFileDir – извлекает из полного имени файла название папки

Функция ExtractFileDrive – извлекает из полного имени файла название диска

Функция ExtractFileExt – извлекает из полного имени файла его расширение

Функция ExtractFileName – извлекает из полного имени файла краткое имя файла

Функция ExtractFilePath – извлекает из полного имени файла название патча

Функция FahrenheitToCelsius – конвертирует температуру из Фаренгейта в Цельсий

Функция FileAge – получение даты/время последнего изменения файла, не открывая его

Функция FileDateToDateTime – конвертирует формат даты/времени файла в значение TDateTime

Функция FileExists – возвращает True если указанный файл существует

Функция FileGetAttr – выдаёт атрибуты файла

Функция FilePos – даёт позицию файла в двоичном или текстовом файле

Функция FileSearch – поиск файла в одной или более папках

Функция FileSetAttr – устанавливает атрибуты файла

Функция FileSetDate – установка даты и времени последнего изменения файла

Функция FileSize – выдает размер открытого файла в записях

Функция FindClose – закрывает успешный FindFirst поиск файла

Функция FindCmdLineSwitch – определяет, был передан некоторый параметр выключатель

Функция FindFirst – находит все файлы, соответствующие маске файла и атрибутов

Функция FindNext – находит следующий файл после успешного FindFirst

Функция FloatToStrF – преобразует значение с плавающей запятой в строку с форматированием

Функция ForceDirectories – создаёт новый путь каталогов

Функция Format – расширенное форматирование чисел и текста в строке

Функция FormatCurr – расширенное форматирование значений валюты в строку

Функция FormatDateTime – расширенное форматирование переменной TDateTime в строку

Функция FormatFloat – расширенное форматирование числа с плавающей запятой в строку

Функция Frac – дробная часть числа с плавающей запятой

Функция GetCurrentDir – возвращает текущий каталог (диск плюс каталог)

Функция GetLastError – выдаёт код ошибки последнего неудачного Windows API вызова

Функция GetMem – получает указанное число байтов памяти

Функция Hi – возвращает байт старшего разряда от типа Integer

Функция High – возвращает самое высокое значение типа или переменной

Функция IncDay – приращивает переменную типа TDateTime на + или - число дней

Функция IncMillisecond – приращивает переменную типа TDateTime на + или - число миллисекунд

Функция IncMinute – приращивает переменную типа TDateTime на + или - число минут

Функция IncMonth – увеличивает TDateTime переменную на некоторое число месяцев

Функция IncSecond – приращивает переменную типа TDateTime на + или - число секунд

Функция IncYear – увеличивает TDateTime переменную на количество лет

Функция InputBox – отображает диалог, который просит пользователя о вводе текста, со значением по умолчанию

Функция InputQuery – отображает диалог, который просит пользователя о вводе текста

Функция Int – целая часть числа с плавающей точкой

Функция IntToHex – преобразует целое число в шестнадцатеричную строку

Функция IntToStr – конвертирует целое число в строку

Функция IOResult – содержит возвращаемый код последней операции ввода/вывода

Функция IsInfinite – проверяет, является ли число с плавающей точкой бесконечным

Функция IsLeapYear – возвращает True, если данный календарный год високосный

Функция IsMultiThread – возвращает True, если код выполняет множество потоков

Функция IsNaN – выясняет, содержит ли число с плавающей запятой настоящее число

Функция LastDelimiter – находит последнюю позицию указанных символов в строке

Функция Length – возвращает число элементов в массиве или строке

Функция Ln – выдает натуральный логарифм числа

Функция Lo – возвращает младший байт целого числа (2-байтового)

Функция Log10 – вычисляет логарифм числа с основанием 10

Функция Low – возвращает самое низкое значение типа или переменной

Функция Max – выдает максимальное число из двух целых значений

Функция Mean – выдает среднее число из набора чисел

Функция MessageDlg – отображает сообщение, знак и выбираемые кнопки

Функция MessageDlgPos – отображает сообщение и кнопки в заданной позиции экрана

Функция Min – выдает минимальное из двух целых значений

Функция MonthOfTheYear – выдает месяц года для значения TDateTime

Функция Now – выдает текущую дату и время

Функция Odd – проверяет, является ли целое число нечетным

Функция Ord – порядковое значение целого числа, символа или перечисления

Функция ParamCount – выдает число параметров переданной текущей программе

Функция ParamStr – возвращает один из параметров, используемых для запуска текущей программы

Функция Pi – математическая константа

Функция Point – генерирует значение TPoint из значений X и Y

Функция PointsEqual – сравнивает два значения TPoint на предмет равенства

Функция Pred – уменьшает порядковую переменную

Функция Printer – возвращает ссылку на глобальный объект Printer

Функция PromptForFileName – показывает диалог, позволяющий пользователю выбрать файл

Функция PtInRect – проверяет, находится ли точка в пределах прямоугольника

Функция RadToDeg – преобразовывает значение радиана в градусы

Функция Random – генерирует случайное число с плавающей запятой или целое число

Функция RandomRange – генерирует произвольное число в пределах введённого диапазона

Функция RecodeDate – изменяет только дату переменной TDateTime

Функция RecodeTime – изменяет только время переменной TDateTime

Функция Rect – создаёт объект TRect (прямоугольник) с указанием 2 точек или 4 координат

Функция RemoveDir – удалить директорию

Функция RenameFile – переименование файла или директории

Функция Round – округление чисел с плавающей запятой до целого числа

Функция SeekEof – пропускает символы, пока не встретится конец файла

Функция SeekEoln – пропускает символы, пока не встретится конец текущей строки или файла

Функция SelectDirectory – выводит диалоговое окно, с помощью которого пользователь может выбрать директорию

Функция SetCurrentDir – изменяет текущую директорию

Функция ShellExecute – открывает или выводит на печать указанный файл

Функция Sin – возвращает синус числа

Функция SizeOf – возвращает занимаемый размер типа или переменной в байтах

Функция Slice – создает часть массива с параметром "Открытый Массив"

Функция Sqr – возвращает квадрат числа

Функция Sqrt – возвращает квадратный корень числа

Функция StringOfChar – создает строку из одного символа, повторенного много раз

Функция StringReplace – заменяет одну или несколько подстрок, найденных в заданной строке

Функция StringToWideChar – преобразует обычную строку в WideChar-буфер с завершающим 0

Функция StrScan – ищет заданные символы в строке

Функция StrToCurr – преобразует числовую строку в денежное выражение

Функция StrToDate – конвертирует строку с датой в значение типа TDateTime

Функция StrToDateTime – конвертирует строку с датой и временем в значение типа TDateTime

Функция StrToFloat – преобразует числовую строку в значение с плавающей запятой

Функция StrToInt – преобразует строку с целым значением в Integer

Функция StrToInt64 – преобразует строку с целым значением в Int64

Функция StrToInt64Def – преобразует строку с целым значением в Int64, учитывая значение по умолчанию

Функция StrToIntDef – преобразует строку в значение с типом Integer, учитывая значение по умолчанию

Функция StrToTime – конвертирует строку с временем в значение с типом TDateTime

Функция StuffString – заменяет часть одной строки на другую

Функция Succ – инкрементирует порядковую переменную

Функция Sum – находит сумму элементов массива, состоящего из чисел с плавающей точкой

Функция Tan – тангенс числа

Функция Time – возвращает текущее время

Функция TimeToStr – конвертирует значение времени типа TDateTime в строку

Функция Tomorrow – возвращает дату завтрашнего дня

Функция Trim – удаляет начальные и конечные пробелы в строке

Функция TrimLeft – удаляет начальные пробелы в строке

Функция TrimRight – удаляет конечные пробелы в строке

Функция Trunc – целая часть числа с плавающей запятой

Функция VarType – возвращает текущий тип Variant переменной

Функция WideCharToString – копирует строку WideChar, заканчивающуюся нулём, в нормальную строку

Функция WrapText – добавляет перенос строки в строку, чтобы имитировать перенос слов

Функция Yesterday – возвращает вчерашнюю дату в местном часовом поясе

Delphi Процедуры

Процедура Abort – прерывает обработку команд и выходит к последнему исключительному блоку

Процедура Append – открывает текстовый файл, для добавления записей в файл (добавляет в конец файла)

Процедура AssignFile – связывает дескриптор файла с бинарным или текстовым файлом

Процедура AssignPrn – обрабатывает принтер как текстовый файл (простой способ печати текста)

Процедура Beep – делает звук гудка

Процедура BlockRead – читает блок записей данных из нетипизированного двоичного файла

Процедура BlockWrite – записывает блок записей данных в нетипизированный двоичный файл

Процедура Break – выполняет выход из одного цикла

Процедура ChDir – выбор диска и директории (папки), в которой будет производиться работа

Процедура CloseFile – закрывает открытый файл

Процедура Continue – заставляет перейти к следующей итерации цикла

Процедура DateTimeToString – огромные возможности форматирования даты в строку

Процедура Dec – декремент порядковой переменной

Процедура DecodeDate – извлекает значения года, месяца, дня из TDateTime переменной

Процедура DecodeDateTime – разбивает TDateTime переменную на ее части даты/времени

Процедура DecodeTime – разбивает значение TDateTime на отдельные значения времени

Процедура Delete – удаляет часть символов из строки

Процедура Dispose – очищает память на которую указывает указатель

Процедура EndThread – заканчивает поток с кодом завершения

Процедура Erase – стирает файл

Процедура Exclude – исключает значение из переменной набора (множества)

Процедура Exit – осуществляет выход из функции или процедуры

Процедура FillChar – заполняет раздел памяти значением байта или символа-заполнителя

Процедура Flush – сбрасывает буферизованные данные текстового файла в файл

Процедура FreeAndNil – освобождение памяти объекта и установка его в nil

Процедура FreeMem – освобождает память, используемую переменной

Процедура GetDir – получает текущий каталог (диск плюс путь) для указанного диска

Процедура GetLocaleFormatSettings – получает региональные значения для безопасных потоков функций

Процедура Halt – заканчивает программу с дополнительным диалогом

Процедура Inc – увеличивает порядковую переменную

Процедура Include – включает значение во множество переменных

Процедура Insert – вставляет строку в другую строку

Процедура MkDir – создаёт каталог

Процедура Move – копирует байты данных из источника в место назначения

Процедура New – создаёт новую переменную типа указатель

Процедура ProcessPath – разделяет строку диск/путь/имя файла на ее составляющие части

Процедура Randomize – устанавливает генератор случайного числа на следующее значение

Процедура Read – позволяет прочитать данные из двоичного или текстового файла

Процедура ReadLn – позволяет прочитать полную строку данных из текстового файла

Процедура Rename – переименование файла

Процедура ReallocMem – позволяет изменить размер существующего блока памяти

Процедура ReplaceDate – изменяет только часть даты TDateTime переменной

Процедура ReplaceTime – изменяет только часть времени TDateTime переменной

Процедура Reset – открывает текстовый файл для чтения, или двоичный файл для чтения/записи

Процедура ReWrite – открывает текстовый или двоичный файл для записи

Процедура RmDir – удаление каталога

Процедура RunError – заканчивает программу с диалогом ошибки

Процедура Seek – перемещает указатель в двоичном файле в новую позицию

Процедура SetLength – изменяет размер строки или размер динамического массива

Процедура SetString – копирует символы из буфера в строку

Процедура ShowMessage – показывает простое диалоговое окно с кнопкой ОК, содержащее заданную строку

Процедура ShowMessageFmt – отображает отформатированные данные в простом диалоговом окне с кнопкой ОК

Процедура ShowMessagePos – показывает строку в простом диалоговом окне размещенном в заданном месте

Процедура Str – конвертирует целое число или число с плавающей точкой в строку

Процедура Truncate – уменьшает размер файла, удаляя все данные после текущей позиции

Процедура Val – конвертирует числовые строки в целое число, или число с плавающей запятой

Процедура Write – записывает данные в бинарный или текстовый файл

Процедура WriteLn – записывает законченную строку данных в текстовый файл

Main Menu