2009
.pdfWriteLn(f, список переменных);
Процедуры записывают информацию в текстовый файл. Способ записи зависит от типа переменных в списке (как и при выводе на экран). Учитывается формат вывода. WriteLn от Write отличается тем, что после записи всех значений из переменных записывает еще и метку конца строки (формируется законченная строка файла).
Добавление информации к концу файла:
Append(f)
Процедура открывает текстовый файл для добавления информации к его концу. Используйте эту процедуру вместо
Rewrite.
Примеры работы с текстовыми файлами:
1{Запись в новый файл}
...
var F: TextFile; begin
...
AssignFile(F,'1.txt');
Rewrite(F); WriteLn(F,'First string...'); WriteLn(F,'Second string...'); CloseFile(F);
...
2{Добавление записей в существующий файл}
...
var F: TextFile;
S: string; begin
...
51
AssignFile(F,'1.txt'); {$I-}
Append(F); {$I+}
if IOResult<>0 then begin WriteLn('Error! Can not to open the file'); exit;
end;
S:='Add string'; WriteLn(F,S); CloseFile(F);
...
3 {Чтение файла}
...
var F: TextFile; S: string; begin
...
AssignFile(F,'1.txt'); {$I-}
Reset(F);
{$I+}
if IOResult<>0 then begin WriteLn('Error! Can not to open the file'); exit;
end;
while not eof(F) do begin ReadLn(F,S); WriteLn(S);
end;
CloseFile(F);
...
52
6.4. Основы работы с файлами типа *.docx
Потребность в экспорте данных в MS Word может возникнуть у каждого программиста. Поскольку MS Office установлен в нашей стране практически на каждом компьютере, поэтому отчётность можно смело переносить между компьютерами и быть уверенным, что её смогут прочитать.
MS Office использует технологию COM. Для работы в Delphi с технологии COM необходимо подключить модуль ComObj. В этом модуле описаны все необходимые функции для работы с СОМ-объектами.
В качестве примера разберем создание приложения для экспорта данных из приложения в файл *.docx. Для этого необходимо выполнить следующие действия:
1. Запустите MS Word. В документ введите три строки:
Фамилия
Имя
Отчество
2. Через пробел от надписи "Фамилия" создадим закладку. Для этого выполните команду Вставка \ Закладка… . В открывшемся окне введите имя закладки fam и нажмите кнопку Добавить.
53
Рис. 1. Окно для создания закладки
После надписи "Имя" создайте закладку im, а после "Отчество" – otc.
3.Сохраните файл папку D:\Группа\ФИО студента под именем test.
4.Закройте MS Word.
5.Запустите Delphi. Создайте новый проект.
6.Назовите форму MainForm с заголовком Главная размер 800х600. Сохраните проект в папку D:\Группа\ФИО.
7.На форме создайте:
первую панель высотой 60, сделайте, чтобы она выравнивалась по верхнему краю окна. Измените цвет панели;
вторую панель, сделайте, чтобы выравнивалась по нижнему краю окна. Измените цвет панели;
третью панель, сделайте, чтобы она занимала всю оставшуюся форму;
8.На первой панели по центру создайте надпись "Анкета". Размер шрифта сделайте 24.
54
9.На второй панели создайте кнопки: Экспорт, Разработчик и Закрыть.
10.На третьей панели создайте надписи "Фамилия", "Имя" и "Отчество". Рядом с каждой надписью создайте однострочный редактор.
11.Запрограммируем кнопку Экспорт, чтобы при её нажатие данные из однострочных редакторов переносились в созданный документ Word. Для этого в процедуру обработки для кнопки введите код:
WordApp:=CreateOleObject('Word. Application'); WordApp. Documents. Open(ExtractFilePath(Application.
ExeName) +'test. docx');
WordApp. ActiveDocument. SaveAs(ExtractFilePath(Application. ExeName) +'testnew. docx');
WordApp. Visible:=true;
WordApp. Selection. GoTo(-1, unAssigned, unAssigned, 'fam');
WordApp. Selection. Font. Size:=16; WordApp. Selection. TypeText (Edit1.Text);
WordApp. Selection. GoTo(-1, unAssigned, unAssigned, 'im'); WordApp. Selection. Font. bold:=true;
WordApp. Selection. TypeText (Edit2.Text);
WordApp. Selection. GoTo(-1, unAssigned, unAssigned, 'otc');
WordApp. Selection. TypeText (Edit3.Text);
12.В коде используются переменная WordApp типа
Variant.
13.MS Office использует технологию COM, поэтому к проекту подключите модуль ComObj.
14.Для работы с MS Word используются функции, описанные в модуле WordXP.
15.Рассмотрим код:
55
функцию CreateOleObject позволяет наладить связь с другим приложением по технологии СОМ, в нашем случае с
Word;
чтобы открыть заранее заготовленный документ Word используется методом Open коллекции Documents;
метод SaveAs используется для сохранения рабочего документа;
метод GoTo позволяет переместиться на нужную позицию в документе Word, в нашем случае на закладку с указанным именем;
команда Selection. Font. Size позволяет задать размер шрифта, а Selection. Font. bold – сделать его полужирным. Можно использовать также:
¨ Font. Italic – курсивный шрифт;
¨ Font. Underline – подчеркнутый шрифт;
метод TypeText вставляет указанный текст в документ
Word.
6.5. Принципы работы с MS EXCEL из Delphi
Здесь вы найдете информацию о том как:
-Подключить и правильно отключить интерфейс Excel;
-Как изменить размер, цвет и тип шрифта;
-Как выделить, объединить, заполнить и размножить диапазон ячеек;
-Как повернуть и отцентрировать текст;
-Как нарисовать границы ячеек;
-Как ввести формулу в ячейку и многое другое...
Работать будем через модуль ComObj, для этого в uses необходимо добавить модуль ComObj и модуль Excel_TLB (для MS Excel 2007).
Uses ……, ComObj, Excel_TLB;
56
Модуль Excel_TLB содержит необходимые константы для работы с Excel, его можно не подключать, но тогда придется в ручную прописывать значения всех используемых констант из этого модуля. Значения констант можно найти внутри модуля или в интернете, но для разных версий MS Excel они разные.
Внимание!!! Модуль Excel_TLB в других версиях MS Excel может называться по другому. Перед подключением модуля Excel_TLB, необходимо импортировать библиотеку
Excel. Для этого выберите Component->Import Component- >Import a Type Library-> находим MS Excel и следуем инструкциям.
В разделе описания переменных мы должны описать переменную типа Variant или OleVariant для подключения интерфейса Excel. Я описал переменную excel.
var
Form1: TForm1;
excel: variant; // Переменная в которой создаётся объект
EXCEL
Создание документа Внимание!!! Всегда когда создаете объект интерфейса,
заключайте процедуру создания в модуль обработки ошибок:
try
создаем интерфейс; формируем отчет; освобождаем интерфейс; Except
обрабатываем ошибки; освобождаем интерфейс; end;
Далее идет краткий справочник по основным функциям работы с EXCEL
57
try
// создаем обьект EXCEL
excel := CreateOleObject('Excel.Application');
//Чтоб не задавал вопрос о сохранении документа excel.DisplayAlerts := false;
//создаем новый документ рабочую книгу excel.WorkBooks.Add;
//или загружаем его из директории с программой excel.WorkBooks.Open(GetCurrentDir() + '\отчет.xls');
{ GetCurrentDir()- возвращает путь к директории с программой}
// Делаем его видимым данную функцию после отладки и тестирования лучше использовать в конце, после сформирования отчета (это ускоряет процесс вывода данных в отчет)
excel.Visible := true;
//задаем тип формул в формате R1C1 excel.Application.ReferenceStyle := xlR1C1;
//задаем тип формул в формате A1 excel.Application.ReferenceStyle := xlA1;
//Задаем название первому и второму листу excel.WorkBooks[1].WorkSheets[1].Name := 'Отчет1'; excel.WorkBooks[1].WorkSheets[2].Name := 'Отчет2';
//задаем формат числа для первой и четвертой колонки формат числа
excel.WorkBooks[1].WorkSheets[1].Columns[1].NumberFor mat := '0,00';
58
excel.WorkBooks[1].WorkSheets[1].Columns[4].NumberFor mat := '0,0';
// задаем ширину первой и второй колонки excel.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidt
h := 10; excel.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidt
h := 20;
// задаем начертание, цвет, размер и тип шрифта для первого ряда
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Bold := True; //жирный
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Color := clRed; // цвет красный
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Size := 12; //размер 12
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Name := 'Times New Roman'; //шрифт
//присваиваем ячейке 1,4 и 2,4 значения (1 - ряд, 4 - колонка)
excel.WorkBooks[1].WorkSheets[1].Cells[1, 4] := 'А так можно внести значение в ячейку';
excel.WorkBooks[1].WorkSheets[1].Cells[2, 4] := 'А так можно внести значение в ячейку';
//ввод в ячейку 'A12' формулы '=b5+c4' excel.WorkBooks[1].WorkSheets[1].Range['A12'].Formula:=
'=b5+c4';
// Выравнивам первый ряд по центру по вертикали excel.WorkBooks[1].WorkSheets[1].Rows[1].VerticalAlignm
ent := xlCenter;
// Выравнивам первый ряд по центру по горизонтали
59
excel.WorkBooks[1].WorkSheets[1].Rows[1].HorizontalAlign ment := xlCenter;
// Выравнивам в ячейке по левому краю excel.WorkBooks[1].WorkSheets[1].Cells[3,
2].HorizontalAlignment := xlLeft;
// Выравнивам в ячейке по правому краю excel.WorkBooks[1].WorkSheets[1].Cells[3,
4].HorizontalAlignment := xlRight;
//Обьединяем ячейки 'A1:A8' excel.WorkBooks[1].WorkSheets[1].Range['A1:A8'].Merge;
//Поворачиваем слова под углом 90 градусов для второго
ряда
excel.WorkBooks[1].WorkSheets[1].Rows[2].Orientation :=
90;
// Поворачиваем слова под углом 45 градусов для диапазона ячеек 'B3:D3'
excel.WorkBooks[1].WorkSheets[1].Range['B3:D3'].Orientat ion := 45;
//рисуем границы выделенного диапазона левая excel.Selection.Borders[xlEdgeLeft].LineStyle :=
xlContinuous; // стиль линии сплошная excel.Selection.Borders[xlEdgeLeft].Weight := xlMedium;//
толщина линии
//рисуем границы выделенного диапазона верхняя excel.Selection.Borders[xlEdgeTop].LineStyle :=
xlContinuous;
excel.Selection.Borders[xlEdgeTop].Weight := xlMedium;
//рисуем границы выделенного диапазона нижняя
60