
- •Лабораторная работа №1 Тема: Анализ предметной области задачи. Проектирование структуры базы данных
- •Постановка задачи
- •Лабораторная работа №2 Тема: Создание таблиц бд инструментальным способом
- •Задания:
- •Лабораторная работа №5 Тема: Определение отношений между таблицами
- •Задание:
- •Лабораторная работа №6 Тема: Создание таблиц бд реляционным способом
- •Задание:
- •Лабораторная работа №7 Тема: Навигация нд. Модификация нд
- •Задание:
- •Лабораторная работа №9 Тема: Поиск записей
- •Лабораторная работа №10 Тема: Запросы
- •Задание:
- •Лабораторная работа №11 Тема: Запросы с параметром. Динамический запрос
- •Задание:
- •Лабораторная работа №12 Тема: Простой отчет (Rave Report, qReport)
- •Задание:
- •Создание простейшего отчёта с помощью qReport
- •Лабораторная работа №13 Тема: Отчет с группировкой. Отчет со связанными таблицами
- •Задание:
- •Создание отчёта с группировкой (qReport)
- •Создание отчёта с группировкой (Rave Report)
- •Создание отчёта для связных нд (qReport)
- •Лабораторная работа №14 Тема: Экспорт и импорт данных в Word, Excel
- •Задание:
- •Экспорт в ms excel
- •Экспорт в ms Word
- •Лабораторная работа №15 Тема: Экспорт и импорт данных в Calc, Writer
Лабораторная работа №14 Тема: Экспорт и импорт данных в Word, Excel
Цель: Изучить вкладку Servers, способы экспорта и импорта данных в Word, Excel.
Задание:
Изучить вкладку Servers.
Изучить способы экспорта и импорта данных в Word, Excel.
Осуществить экспорт и импорт данных в Word, Excel.
Экспорт в ms excel
Добавляем в раздел uses модуль ComObj, в котором описаны все необходимые функции для работы с COM – объектами;
Создаём обработчик события для пункта меню Экспорт – Excel. В обработчике прописываем следующий код программы:
var
XLApp,Sheet,Colum:Variant;
index,i:Integer;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт ';
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт '].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlue;
Colum.Rows[1].Font.Size:=14;
Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт '];
Sheet.Cells[1,2]:='Список студентов ';
Sheet.Cells[2,1]:='ФИО ';
Sheet.Cells[2,2]:='Форма обучения ';
Sheet.Cells[2,3]:='Группа ';
Sheet.Cells[2,4]:='Прописка ';
Sheet.Cells[2,5]:='Паспорт ';
index:=3;
DataModule2.TStydent.First;
for i:=0 to DataModule2.TStydent.RecordCount-1 do
begin
Sheet.Cells[index,1]:=DataModule2.TStydent.Fields.Fields[1].AsString;
Sheet.Cells[index,2]:=DataModule2.TStydent.Fields.Fields[2].AsString;
Sheet.Cells[index,3]:=DataModule2.TStydent.Fields.Fields[3].AsString;
Sheet.Cells[index,4]:=DataModule2.TStydent.Fields.Fields[4].AsString;
Sheet.Cells[index,5]:=DataModule2.TStydent.Fields.Fields[5].AsString;
Inc(index);
DataModule2.TStydent.Next;
end;
end;
Строка:
XLApp:= CreateOleObject('Excel.Application');
создаёт объект Excel и записывает его в переменную XLApp. Эта переменная типа Variant., которая может принимать любые значения : строки, числа, указатели и др .
Функция CreateOleObject позволяет наладить связь с другим приложением по технологии COM. Через эту связь можно передавать данные в чужие приложения. Для этого программа, к которой мы присоединяемся, должна иметь возможности для получения данных извне (как, например , Excel).
Строка XLApp.Visible:=true;
заставляет запустить сам Excel.
Добавляем новую рабочую книгу: XLApp.Workbooks.Add(-4167);
Число в скобках – это константа, которая означает создание книги и её изменять нельзя.
Даём название созданной книге:
XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт ';
Теперь Excel запущен и создана новая книга. Можно переходить к впечатыванию данных. Но прежде чем это сделать, необходимо отформатировать колонки и строки. Для этого получаем указатель на колонки рабочей книги:
Colum:= XLApp. Workbooks[1].WorkSheets['Отчёт ']. Columns;
и записываем результат в переменную Colum типа Variant.
Теперь последовательно изменяем ширину колонок:
Colum.Columns[1].ColumnWidth:=20;
После этого в ту же переменную записываем указатель на строки рабочей книги:
Colum := XLApp. Workbooks[1]. WorkSheets['Отчёт ']. Rows;
Устанавливаем у первых двух строк жирный шрифт:
Colum. Rows[1]. Font.Bold := true;
В квадратных скобках теперь порядковый номер строки.
Далее идут две строки, в которых устанавливаем цвет первой строки в синий и размер шрифта равный 14:
Colum.Rows[1].Font.Color:=clBlue;
Colum.Rows[1].Font.Size:=14;
Форматирование окончено, теперь можно выводить данные. Для этого необходимо получить указатель на лист:
Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт '];
Для того , чтобы вывести данные , нужно просто присвоить значение в
Sheet.Cells[строка , колонки ].
Для вывода данных таблицы сначала задаём переменной index значение 3. Эта переменная будет отображать, в какую строку таблицы Excel мы сейчас должны выводить данные. Первые две строки уже заняты заголовками для отчёта, поэтому данные нужно начинать выводить с третей строки.
ВНИМАНИЕ! Строки и таблицы в Excel нумеруются с единицы, а не с нуля, как в остальных таблицах и массивах.
После этого переходим на первую строку нашей таблицы с помощью метода First компонента Table. Это необходимо, потому что пользователь может перед нажатием кнопки отчёта выделить любую строку в середине таблицы и в этом случае отчёт пойдёт от этой выделенной строки.
Теперь необходимо запустить цикл, в котором будут перебираться все строки, и информация из них будет попадать в Excel. Цикл запускаем, начиная с 0 и до количества строк в таблице. Таким образом перебираем все записи.
Теперь последовательно заполняем колонки данными из таблицы, присваивая в Sheet.Cells[index, номер колонки ] соответствующие данные.
Данные из базы данных берём по индексу. Для этого используется:
DataModule1.TStydent.Fields.Fields[Номер поля].AsString;
После вывода данных увеличиваем переменную Index, чтобы на следующем этапе выводить данные в следующую строку, и переходим на новую строку.