Використання редактора таблиць Excell

 

Використання редактора таблиць Excell

       

        В даній лекції буде описано як перекинути данні таблиці в ексель, це може бути актуально, наприклад, якщо потрібно влаштувати обмін даними між офісами компаній, або просто імпортувати в іншу програму так як файли електронних таблиць екселю є широко поширюваними, та підтримуються багатьма сторонніми розробниками.

         Ми не будемо зберігати файл в форматі екселю, так як це досить тяжко і в принципі не є потрібним так як ексель має вбудований і досить гнучкий інтерфейс обміну даними із зовнішніми програмами.

         І так розпочнемо, перше нам потрібно щоб на машині на якій безпосередньо буде відбуватися експорт був встановлений ексель. По друге, нам потрібно якимось чином його зв’язати з нашим додатком, а зв’язувати його ми будемо за допомогою OLE інтерфейсу.

 

         Для того щоб встановити зв’язок з екселем нам потрібно додати в розділ Uses модуль ComObj. Всі ідентифікатори при роботі з OLE об’єктами повинні бути спеціального типу OleVariant – це без типова змінна, яки може містити будь-які значення, окрім спеціального – 4167, це значення ідентифікує змінну як порожню.

         Оголосимо дві змінні Excel,Sheet:OleVariant; перша відповідає за саму програму ексель, а друга відповідатиме за робочу сторінку на яку ми будемо вставляти данні.

 

         Excel:=CreateOleObject('Excel.Application'); - встановить зв’язок з середовищем ексель, зв’язок буде не помітним для користувача, так як вікно не відобразиться на моніторі.

         Excel.Visible := True; - покаже вікно екселю на моніторі, вікно перекриє наш додаток, тому показувати його слід тільки після того, як користувач ввів всі потрібні нам для роботи данні.

         Excel.Workbooks.Add(-4167); - додасть чисту робочу сторінку. Якщо замість – 4167 передати повну назву документа, ексель його відкриє, що може бути корисним якщо ви заготували шаблон документа і вам просто потрібно внести в нього данні.

         Sheet := Excel.Workbooks[1].WorkSheets[1]; - запам’ятаємо посилання на робочу сторінку, з наведеного вгорі тексту видно, що одночасно можна працювати не лише з одною сторінкою.

         Sheet.Name := N; - задасть ім’я нової сторінки, змінна рядкового типу.

 

         Для того, щоб завершити роботу ексель можна просто очистити контролюючі змінні таким чином:

         Excel := Unassigned;

Sheet := Unassigned;

Якщо ж потрібно екстрено завершити ексель (без збереження данних). Потрібно використати таку послідовність керуючих процедур:

Excel.DisplayAlerts := False;

Excel.Quit;

Після цього потрібно все-одно очистити контролюючі змінні.

 

Так як ексель використовує своєрідну нумерацію сторінок (наприклад клітинка 2:2 в розумінні екселю має адресу В2). Тому потрібно це врахувати при адресуванні даних при експорті. Можна написати спеціальну процедуру перекодування однієї системи в іншу, наприклад таку:

Function ConvertInCell(X,Y:Integer):String;

Const

 Xdef:String='ABCDEFGHIJKLMNOPQRSTUVWXYZ';

 Xcou=26;

Var

 R:String;

Begin

 R:='';

If (X div Xcou)=0 then R:=R+Xdef[X] else

 R:=R+Xdef[X]+Xdef[X mod Xcou];

 Result:=R+IntToStr(Y);

End;

 

         Функція передачі даних в клітинку має такий вигляд:

         Sheet.Range[ адреса клітинки ]:= текст ; - де

 

         Адреса клітинки може містити як і адресу певної клітинки (наприклад А1), так і прямокутник виділений по вершинах (наприклад А1,А2,В1,В2 – в такому виді потрібно замість тексту передавати масив потрібних значень).

         Текст може бути або просто рядком, або масив з рядків.

 

         Форматування тексту клітинки здійснюється таким чином:

Sheet.Range[ адреса клітинки ].Font.Bold:= _ ;

Sheet.Range[ адреса клітинки ].Font.Italic:= _ ;

Sheet.Range[ адреса клітинки ].Font.Underline:= _ ;

Sheet.Range[ адреса клітинки ].Font.Color:=Color;

Sheet.Range[ адреса клітинки ].Font.Size:=Size;

Sheet.Range[ адреса клітинки ].Font.Name:=Name;

 

         Де _ 1 або 0 еквівалентно до True або False.

         Color – колір записаний в форматі $RRGGBB

         Size – розмір шрифту

         Name – ім’я шрифту (наприклад ‘Times New Roman’)

 

         Масштабування клітинки здійснюється таким чином (звернути увагу потрібно на те, що довжина і ширина клітинки задається в мірах довжини екселя, може містити дробову частину)

 

Sheet.Range[ адреса клітинки ].RowHeight:=Height;

Sheet.Range[ адреса клітинки ].ColumnWidth:=Width;

 

         Для того, щоб додати малюнок до екселю (буде доцільно, наприклад, якщо потрібно додати логотип компанії) потрібно:

 

Sheet.Pictures.Insert( повне ім’я файлу).Select;

Select потрібне для того, щоб малюнок став активним, так як ми  будемо змінювати його розміри.

Excel.Selection.ShapeRange.LockAspectRatio:='0';

0 означає, що ми відключаємо збереження пропорцій малюнка

Excel.Selection.ShapeRange.Height:=Height;

Excel.Selection.ShapeRange.Width:=Width;

                                               Безпосередньо новий розмір малюнку

Excel.Selection.ShapeRange.Left:=Left;

Excel.Selection.ShapeRange.Top:=Top;

                                               Регулює положення малюнка на листі екселя

 

         І на кінець, опишемо як вставити формулу в клітинку. Синтаксис формули такий же як в екселі і також починатися має із =

 

Sheet.Range[ номер клітинки ].Formula:=Formula;

 

         Де Formula є рядковою змінною.