На этом шаге мы рассмотрим открытие существующей рабочей книги 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.
Имя | Тип | Назначение |
---|---|---|
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.
Результат его работы приведен на рисунке 1.
Рис.1. Результат работы приложения
На следующем шаге мы рассмотрим организацию доступа к рабочей книге.