Використання редактора таблиць 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 є рядковою змінною.