6. Работа с сервером Excel (Разработка многомодульных интегрированных SDI-приложений)

2015-08-23СтудИзба

Описание файла

Файл "6. Работа с сервером Excel" внутри архива находится в папке "Разработка многомодульных интегрированных SDI-приложений". Документ из архива "Разработка многомодульных интегрированных SDI-приложений", который расположен в категории "". Всё это находится в предмете "проектирование программного обеспечения автоматизированных систем" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "проектирование по автоматизированных систем" в общих файлах.

Онлайн просмотр документа "6. Работа с сервером Excel"

Текст из документа "6. Работа с сервером Excel"

Работа с сервером Excel

При создании нового документа в Excel (рабочая книга) из совокупности библиотек выбираются объекты, которые составляют каркас документа. Эти объекты доступны программисту.

Объект ExcelApplication задает приложение Excel, его свойства, методы и события характеризуют приложение в целом. Одно из свойств (Workbooks) возвращает все открытые в приложении рабочие книги.

Объект ExcelWorkbook задает рабочую книгу и имеет в свою очередь свойство Worksheets – все рабочие листы книги.

Объект Worksheet – это конкретный лист рабочей книги.

1.Установка связи с объектом

В библиотеке VCL имеются специальные компоненты, представляющие объекты Excel в приложении Builder C++. При проектировании приложения необходимо разместить на форме пиктограммы желаемых компонент, а для установки связи с объектами использовать метод Connect(). Вот несколько примеров такой связи:

  • Установить связь с Excel

ExcelApplication1->Connect();

  • Установить связь с активной рабочей книгой

ExcelWorkbook1-> ConnectTo (ExcelApplication1->ActiveWorkbook);

  • Установить связь с активным листом

ExcelWorksheet1 -> ConnectTo ( ExcelWorkbook1->ActiveSheet);

  • Получить лист, следующий за ExcelWorksheet1, и установить связь с ним

ExcelWorksheet2 -> ConnectTo (ExcelWorksheet1 -> get_Next());

Окно Excel станет видимым (или невидимым, если параметр равен false) только после вызова специального метода:

#define lcid LOCALE_SYSTEM_DEFAULT

ExcelApplication1->set_Visible(lcid,true);

Для вызова некоторых методов и свойств используется специальная константа LOCALE_SYSTEM_DEFAULT (lcid), ее значение равно 0.

Количество рабочих книг, открытых в приложении, и число рабочих листов в книге можно определить так:

int n= ExcelApplication1-> Workbooks-> Count;

Label1->Caption=(AnsiString) n;

n= ExcelWorkbook1-> Worksheets->Count;

Label2->Caption=(AnsiString) n;

Для открытия файла используется метод Open:

WideString filename="d:/work.xls";

ExcelApplication1->Workbooks->Open(filename);

Для сохранения рабочей книги используется метод Save:

ExcelWorkbook1->Save(lcid);

Можно добавить новую рабочую книгу и установить с ней связь.

ExcelApplication1->Workbooks -> Add();

ExcelWorkbook3-> ConnectTo ( ExcelApplication1->ActiveWorkbook);

Рабочая книга может иметь автора. Следующие операторы устанавливают и получают имя автора программно:

ExcelWorkbook1->set_Author(0,TVariant("Павлов Иван Петрович"));

Label1->Caption=ExcelWorkbook1->get_Author(lcid);

Сделать рабочий лист активным:

ExcelWorksheet2 ->Activate (lcid);

Можно установить новое имя листа:

ExcelWorksheet1->set_Name((TVariant)"MyList");

Label6->Caption=(AnsiString)ExcelWorksheet1->Name;

2.Работа с ячейками таблицы

Запись значения в активную ячейку

ExcelApplication1->ActiveCell->set_Value((TVariant)"a");

Можно выделить указанную ячейку (например “D1”) и сделать ее активной:

ExcelWorksheet2 -> get_Range ((TVariant)"D1",(TVariant)"D1") -> Select();

ExcelApplication1->get_ActiveCell() -> set_Value((TVariant)"888");

Массив ячеек

В Excel предусмотрено обращение к ячейкам таблицы как к элементам двумерного массива Cells(,). В Builder C++ сначала нужно получить доступ к этому массиву, вызвав метод get_Cells(), а затем метод set_Item(, , ) запишет заданное значение в элемент с указанными индексами. Все параметры перед передачей серверу должны быть упакованы в особый формат TVariant.

Например,

  • - число 222 записывается в ячейку с номерами (1,1):

ExcelWorksheet2 -> get_Cells()-> set_Item((TVariant)1,(TVariant)1,(TVariant)"222");

  • - формула записывается в ячейку (2,2):

ExcelWorksheet2 -> get_Cells()-> set_Item((TVariant)2,(TVariant)2,(TVariant)"=A1+D1");

  • для записи формул можно использовать функции:

ExcelWorksheet2 -> get_Cells()-> set_Item((TVariant)5,(TVariant)1,(TVariant)"=СУММА(A1:A3");

Запись в цикле:

int i, j;

TVariant k;

for (i=0; i<3; i++)

for (j=0; j<4; j++)

{ k=(TVariant)(i+j);

ExcelWorksheet2 -> get_Cells()-> set_Item((TVariant)(i+1),(TVariant)(j+1),k);

}

Извлечение из ячейки:

k= (TVariant)ExcelWorksheet2 -> get_Cells()-> get_Item((TVariant)1,(TVariant)4);

ExcelWorksheet2 -> get_Range((TVariant)"A7",(TVariant)"A7")-> Select();

ExcelApplication1->get_ActiveCell()->set_Value(k);

Объект Range рабочего листа ExcelWorksheet предоставляет удобный доступ к таблице и может представлять:

  • ячейку таблицы

Например, в ячейку B1 занести число 4:

ExcelWorksheet1->get_Range((TVariant)"B1",

(TVariant)"B1")->set_Value((TVariant)4);

  • диапазон ячеек

Запись формулы в ячейки “с3-с6”:

ExcelWorksheet2->get_Range((TVariant)"с3",(TVariant)"с6") -> set_Value((TVariant)"=a3+b3");

Когда формула присваивается диапазону ячеек, то переменные в формуле имеют относительные имена, поэтому в данном примере в ячейку c4 будет вписана формула “=a4 +b4” и т.д.

  • прямоугольную область,

Название города помещается в 12 ячеек

ExcelWorksheet1->get_Range((TVariant)"A2",(TVariant)"D4")->

set_Value((TVariant)"Москва ");

Получить значение из ячейки можно следующим образом:

TVariant y;

y=ExcelWorksheet2->get_Range((TVariant)"b5",(TVariant)"b5")->get_Value();

Очистить содержимое диапазона ячеек:

ExcelWorksheet2 -> get_Range((TVariant)"D1",(TVariant)"E3")-> Clear();

Копировать диапазон ячеек через буфер обмена:

ExcelWorksheet2 -> get_Range((TVariant)"A1",(TVariant)"B3")->Copy();

ExcelWorksheet2 -> get_Range((TVariant)"A7",(TVariant)"B9")->Select();

ExcelWorksheet2 -> Paste();

Смещение Offset

При создании объектов Range нельзя пользоваться смещением. Тем не менее, можно использовать смещение, чтобы переходить от одного объекта Range к другому, например от одной ячейки к другой, отстоящей от первой на определенном расстоянии. Достигается это благодаря методу Offset объекта Range. Метод имеет два параметра: смещение по строкам и столбцам, и возвращает новый объект Range, отстоящий от прежнего на заданное расстояние.

Например, следующий оператор задает запись в ячейку, отстоящую от b5 на (–1, 3), то есть в ячейку

ExcelWorksheet2->get_Range((TVariant)"b5",(TVariant)"b5")->

get_Offset ((TVariant)-1,(TVariant)3)->set_Value((TVariant)"=b5+d4");

В следующем примере числами заполняется прямоугольная область (5 строк, 4 столбца; базовая ячейка “a3”):

int i, j;

for (i=0; i<5; i++)

for (j=0; j<4; j++)

ExcelWorksheet1 -> get_Range((TVariant)"a3",(TVariant)"a3")->

get_Offset((TVariant)i,(TVariant)j)->set_Value((TVariant)(i+j));

3.Оформление ячеек таблицы

Выделить курсивом или полужирным шрифтом:

ExcelWorksheet2 -> get_Range((TVariant)"A1",(TVariant)"E5")->get_Font()-> set_Italic((TVariant)true);

ExcelApplication1->get_ActiveCell()->get_Font()-> set_Bold((TVariant)true);

Выравнивание (xlCenter – по центру, xlRight – по правому краю, xlLeft – по левому краю) и подчеркивание

ExcelWorksheet2 -> get_Range((TVariant)"D1",(TVariant)"E3")-> set_HorizontalAlignment((TVariant)xlCenter); xlRight, xlLeft

ExcelWorksheet2 -> get_Range((TVariant)"D1",(TVariant)"E3")->get_Font()-> set_Underline((TVariant)true);

Изменение цвета букв:

  • Синий

ExcelWorksheet2 -> get_Range((TVariant)"D1",(TVariant)"E3")->get_Font()-> set_Color((TVariant)0x00FF0000);

  • Светло-салатовый

ExcelWorksheet2 -> get_Range((TVariant)"D1",(TVariant)"E3")->get_Font()-> set_Color((TVariant)RGB(0,255,255));

При работе с цветом можно также использовать зарезервированные константы (clRed – красный, clWhite – белый и т.д.).

ExcelWorksheet2 -> get_Range((TVariant)"A1",(TVariant)"B7")->get_Font()-> set_Color((TVariant)clWhite);

Заливка цветом:

ExcelWorksheet2 -> get_Range((TVariant)"A1",(TVariant)"B7")->Interior-> set_Color((TVariant)RGB(0,128,200));

ExcelWorksheet2 -> get_Range((TVariant)"A1",(TVariant)"B7")->Interior-> set_Pattern((TVariant)xlHorizontal);

XlHorizontal определяет горизонтальную штриховку, можно использовать также вертикальную xlVertical и сплошную заливку xlSolid.

Задание

Разработать приложение, для обработки данных электронной таблицы. Приложение открывает (или создает новую) рабочую книгу «Детские товары.xls» и привязать ее к компоненту Workbook1, убедиться, что рабочая книга содержит три рабочих листа (или создать их):

  • лист 1 (Worksheet1) «Счет»;

  • лист 2 (Worksheet2) «Цены»;

  • лист 1 (Worksheet3) «Товары».

Сформировать информацию на рабочих листах:

  • Worksheet3: заголовок «Детские игрушки», таблица должна содержать следующие поля: номер по порядку, код (четырехзначный уникальный, например – 0376 или 9564), название, количество экземпляров в наличии;

  • Worksheet2: заголовок «Цены», таблица должна содержать следующие поля: номер по порядку (записи в таблице могут идти в другом порядке), код (коды берутся из Worksheet3), цена;

  • Worksheet1: заголовок «Счет», таблица должна содержать следующие поля: номер порядку (записи могут идти в другом порядке, чем на других листах), код (коды берутся из Worksheet3), названия (названия берутся из Worksheet3), цена (цены берутся из Worksheet2), количество экземпляров (заказ товара), стоимость товара (количество*цена). Последняя строка на листе содержит общую стоимость заказанного товара (сумма стоимостей отдельных товаров).

Главное окно приложения может выглядеть как на рисунке (заголовок окна «Заказ детских игрушек»).

Порядок создания приложения

После оформления главного окна приложения написать код обработчиков:

  • кнопка «Открыть» устанавливает связь с Excel и либо открывает файл «Детские товары», либо добавляет новую рабочую книгу;

  • кнопка «Закрыть» сохраняет рабочую книгу, разрывает связь с Excel и заканчивает работу всего приложения;

  • кнопка «Лист3» выводит на рабочий лист 3 заголовок «Детские игрушки», заголовки столбцов таблицы и заполняет ее данными о имеющихся в наличии товарах по желанию программиста (5-6 записей);

  • кнопка «Лист2» выводит на рабочий лист 2 заголовок «Цены», заголовки столбцов таблицы и заполняет ее данными о имеющихся в наличии товарах (данные берутся с рабочего листа 3);

  • кнопка «Лист1» выводит на рабочий лист 1 заголовок «Счет», заголовки столбцов таблицы и заполняет ее данными о имеющихся в наличии товарах и ценах (данные берутся с рабочих листов 2 и 3);

  • кнопка «Ввод цен» запрашивает у пользователя цены на имеющиеся товары и заносит их в таблицу на листе 2 (для ввода может использоваться, например, диалоговое окно);

  • кнопка «Заказ» запрашивает у пользователя требуемое количество каждого товара и заносит эти данные в таблицу на листе 1 (для ввода может использоваться, например, диалоговое окно);

  • кнопка «Счет» выполняет сложение стоимостей партий всех товаров и выдает конечный результат (общая стоимость товара).

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

  • кнопка «Открыть»;

  • кнопка «Лист3»

  • кнопка «Лист2»

  • кнопка «Ввод цен»

  • кнопка «Лист1»

  • кнопка «Заказ»

  • кнопка «Счет»

  • кнопка «Закрыть».

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее