Створюваний нами додаток 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.