Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2009

.pdf
Скачиваний:
0
Добавлен:
15.11.2022
Размер:
1.08 Mб
Скачать

WriteLn(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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]