Шаг 118.
Автоматизация Microsoft Excel. Работа с объектом Excel.Application. Открытие существующей рабочей книги

    На этом шаге мы рассмотрим открытие существующей рабочей книги Excel.

    Использование методов коллекции WorkBooks позволяет не только создавать, но и открывать имеющиеся рабочие книги, которые хранятся в файлах. Для этих целей предназначены методы Open и OpenText. Первый метод открывает файл формата XLS, а второй - обычные текстовые файлы. Для простоты используем метод Open с одним аргументом - строкой-указателем на файл. Вот текст процедуры Delphi, использующей метод Open.

procedure TForm1.Button5Click(Sender: TObject);
//Открытие существующей рабочей книги
begin
  if OpenDialog1.Execute then
    E.WorkBooks.Open(OpenDialog1.FileName);
end;

    Полная спецификация вызова метода Open представлена в справочной системе MS Excel и имеет следующий вид:

    Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, 
            IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, 
            Notify, Converter, AddToMRU);

    Обязательным является первый аргумент. Для задания специфических режимов открытия файла можно использовать и другие аргументы. Их список и краткое назначение приведены в таблице 1.

Таблица 1. Аргументы метода Open
Имя Тип Назначение
FileName String Имя файла
UpdateLinks Integer Режим обновления ссылок в рабочей книге
ReadOnly Boolean True - открыть в режиме "только для чтения"
Format Integer Формат открытия текстовых файлов
Password String Пароль, если книга была сохранена с установкой пароля
WriteResPassword String Пароль, необходимый для сохранения изменений, если он был задан ранее
IgnoreReadOnlyRecommended Boolean True - отключение сообщения о том, что файл открывается в режиме "только для чтения", если он был сохранен в режиме "только для чтения"
Origin Integer Кодировка для открываемого текстового файла
Delimiter Integer Код символа-разделителя ячеек таблицы (при открытии текстового файла)
Editable Boolean Дополнительный режим при открытии Excel файлов более ранних версий, чем версия 5.0
Notify Boolean Если была попытка открыть файл в режиме чтение/запись, но в этот момент времени это было невозможно, то при значении True этого аргумента приложение получит уведомление, когда файл станет доступен. Если значение аргумента False или опущено, и файл занят, то попытки открыть его для чтения/записи обречены на неудачу
Converter Integer Индекс конвертора, используемого при открытии файла
AddToMRU Boolean True - имя открываемого файла добавляется в список недавно открытых файлов меню Файл

    При открытии рабочей книги можно использовать любую комбинацию аргументов метода Open. Например, чтобы открыть файл в режиме "только для чтения", изменим представленный выше пример процедуры и представим его в следующем виде.

procedure TForm1.Button6Click(Sender: TObject);
//Открытие существующей рабочей книги в режиме "только для чтения"
begin
  if OpenDialog1.Execute then
    E.WorkBooks.Open(FileName:=OpenDialog1.FileName, ReadOnly:=True);
end;

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

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    OpenDialog1: TOpenDialog;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(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

{$R *.dfm}

var
  E:variant;

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

procedure TForm1.CheckBox1Click(Sender: TObject);
//Отображение окна приложения Excel
begin
  E.Visible:=CheckBox1.Checked;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Создание рабочей книги по умолчанию
begin
  E.WorkBooks.Add;
end;

procedure TForm1.Button3Click(Sender: TObject);
//Создание рабочей книги на основе шаблона 1
const
  xlWBATChart=-4109;
begin
  E.WorkBooks.add(xlWBATChart);
end;

procedure TForm1.Button4Click(Sender: TObject);
//Создание рабочей книги на основе шаблона 2
begin
  if OpenDialog1.Execute then
    E.WorkBooks.add(OpenDialog1.FileName);
end;

procedure TForm1.Button5Click(Sender: TObject);
//Открытие существующей рабочей книги
begin
  if OpenDialog1.Execute then
    E.WorkBooks.Open(OpenDialog1.FileName);
end;

procedure TForm1.Button6Click(Sender: TObject);
//Открытие существующей рабочей книги в режиме "только для чтения"
begin
  if OpenDialog1.Execute then
    E.WorkBooks.Open(FileName:=OpenDialog1.FileName, ReadOnly:=True);
end;

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

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


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

    На следующем шаге мы рассмотрим организацию доступа к рабочей книге.




Предыдущий шаг Содержание Следующий шаг