Чтение и запись значений ячеек. Очистка ячеек

   
На этом шаге мы рассмотрим некоторые действия, выполняемые над ячейками.

   
Переменная, которую отображает ячейка, хранится в свойствах Text и Value объекта Range (Cells),
поэтому для того чтобы ее получить, достаточно прочитать значение одного из этих свойств. Если тип данных (формат)
значения ячейки неизвестен, используем свойство Text, чтобы получить его в виде строки. Когда тип данных
известен, можно попытаться использовать свойство Value.

   
Допустим, нам неизвестен тип данных ячейки. Используем следующую процедуру, которая позволяет
прочитать ее значение.

procedure TForm1.Button4Click(Sender: TObject);
//Чтение из ячейки
var
  Range: Variant;
begin
  Range:=WB.ActiveSheet.Range['B2:B2'];
  Edit1.Text:=Range.Text;
end;

   
При выполнении этой процедуры значение ячейки записывается в свойство Text объекта Value типа
TEdit. Для записи в ячейку достаточно поменять местами объекты в операторе представленной выше
процедуры и использовать свойство Value объекта Range, т. к. свойство Text в данном
случае подходит только для чтения. Так мы и поступим, т. е. запишем содержание объекта TEdit приложения
Delphi в ячейку рабочей книги Excel как текст.

procedure TForm1.Button3Click(Sender: TObject);
//Запись значения в ячейку
var
  Range: Variant;
begin
  Range:=WB.ActiveSheet.Range['B2:B2'];
  Range.Value:=Edit1.Text;
end;

   
Используя данную процедуру, запишем строку символов '111' в ячейку В2. Результат представлен на
рисунке 1.


Рис.1. Результат работы приложения

   
Такой же результат можно получить, используя объект Cells:

   Cell.Value:=Edit1.Text;

   
И в этом случае записанные в ячейку символы отображаются как строка.

   
Для того чтобы записать значение в числовом формате, достаточно немного изменить процедуру и записывать в
свойство Value не строковую переменную, а переменную типа Integer или Currency, как это
показано на следующем примере.

procedure TForm1.Button5Click(Sender: TObject);
//Запись числового значения в ячейку
var
  Range: Variant;
begin
  Range:=WB.ActiveSheet.Range['B3:B3'];
  Range.Value:=StrToCurr(Edit1.Text);
end;

   
Результат выполнения процедуры представлен на рисунке 1. В данном случае объект Range автоматически
определил тип записываемого значения и отобразил его соответствующим образом, изменив формат ячейки.

   
Если требуется отобразить записываемое значение в виде даты, то в свойство Value мы должны записать
переменную, которая имеет в разрабатываемом приложении Delphi тип TDate.

procedure TForm1.Button6Click(Sender: TObject);
//Запись даты в ячейку
var
  Range: Variant;
begin
  Range:=WB.ActiveSheet.Range['B4:B4'];
  Range.Value:=StrToDate(Edit1.Text);
end;

   
Соответственно результат будет выглядеть, как показано на рисунке 1.

   
Приведем полный текст приложения.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  E:variant;
  WB:variant;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта Excel и отображение окна
begin
  E:=CreateOleObject('Excel.Application');
  E.Visible:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Создание рабочей книги
begin
  E.WorkBooks.Add;
  WB:=E.WorkBooks.Item[1]; // Ссылка на рабочую книгу
end;

procedure TForm1.Button3Click(Sender: TObject);
//Запись значения в ячейку
var
  Range: Variant;
begin
  Range:=WB.ActiveSheet.Range['B2:B2'];
  Range.Value:=Edit1.Text;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Чтение из ячейки
var
  Range: Variant;
begin
  Range:=WB.ActiveSheet.Range['B2:B2'];
  Edit1.Text:=Range.Text;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Запись числового значения в ячейку
var
  Range: Variant;
begin
  Range:=WB.ActiveSheet.Range['B3:B3'];
  Range.Value:=StrToCurr(Edit1.Text);
end;

procedure TForm1.Button6Click(Sender: TObject);
//Запись даты в ячейку
var
  Range: Variant;
begin
  Range:=WB.ActiveSheet.Range['B4:B4'];
  Range.Value:=StrToDate(Edit1.Text);
end;

end.

Текст этого приложения можно взять здесь (6,3 Кб).

   
Мы выяснили следующий факт: свойство Value объекта Range, имеющее тип Variant,
допускает запись данных разного типа, что позволяет изменить формат ячейки в дальнейшем.

   
Это утверждение относится не только к объекту Range, но и к объекту Cells, т. к. они оба
представляют собой ссылку на ячейку (или область). Но независимо от того, какой тип имело записанное в ячейку
значение, мы можем изменить формат ячейки в любой момент.

   
На следующем шаге мы рассмотрим формат отображения данных ячейки.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий