русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Використання шаблону для формування книги


Дата додавання: 2014-10-07; переглядів: 810.


 

Шаблони є самим зручним способом формування книг Excel. Розроблювач може створити багато шаблонів, у яких задати розташування текстових блоків і їх форматування. Шаблон може містити як постійні елементи, так і елементи-змінні, на місце яких буде підставлятися інший текст при формуванні документа. Такі змінні повинні мати якісь унікальні в межах шаблону імена (наприклад: #fam#, #imya#, #otch# і т.п.).

Програма може знайти ці імена змінних на i-му аркуші й замінити їх на зазначений текст за допомогою коду:

e.activeworkbook.sheets.item[i].cells.replace(what:='зразок', replacement:='заміна');

Наприклад, нехай у шаблоні anketa.xlt з теки shablon на першому аркуші є змінні: #fam#, #imya#, #otch#. Необхідно на їхнє місце підставити значення Іванов, Іван, Іванович.

 

try

//підключаємося до Excel

e:=getactiveoleobject('excel.application');

except

//якщо підключення не вдалося (Excel не запущений)

//створюємо новий об'єкт, запускаючи Excel

e:=createoleobject('excel.application');

end;

 

//створюємо нову книгу на основі шаблону

e.workbooks.add(extractfilepath(application.Exename)+'shablon\anketa.xlt');

 

//заміняємо #fam# на Іванов

e.activeworkbook.sheets.item[1].cells.replace(what:='#fam#', replacement:='Іванов');

//заміняємо #imya# на Іван

e.activeworkbook.sheets.item[1].cells.replace(what:='#imya#', replacement:='Іван');

//заміняємо #otch# на Іванович

e.activeworkbook.sheets.item[1].cells.replace(what:='#otch#', replacement:='Іванович');

 

//робимо книгу видимої

e.visible:=true;

Замість змінних у шаблоні можна підставляти не тільки конкретні значення, а й вміст полів таблиці БД. Такий підхід дозволяє створювати звіти по БД із експортом їх в Excel.

Приклад. Нехай у шаблоні anketa.dot з теки shablon є змінні: #fam#, #imya#, #otch#, #datar#. Необхідно на їхнє місце підставити значення полів fam, tab, otch, datar з поточного запису таблиці БД. Для цього напишемо код:

 

try

//підключаємося до Excel

e:=getactiveoleobject('excel.application');

except

//якщо підключення не вдалося (Excel не запущений)

//створюємо новий об'єкт, запускаючи Excel

e:=createoleobject('excel.application');

end;

 

//створюємо новий документ на основі шаблону

e.workbooks.add(extractfilepath(application.Exename)+'shablon\anketa.xlt');

 

//заміняємо #fam# на поле fam

e.activeworkbook.sheets.item[1].cells.replace(what:='#fam#', replacement:=adotable1.fieldbyname('fam').asstring;);

//заміняємо #imya# на поле imya

e.activeworkbook.sheets.item[1].cells.replace(what:='#imya#', replacement:=adotable1.fieldbyname('imya').asstring;);

//заміняємо #otch# на поле otch

e.activeworkbook.sheets.item[1].cells.replace(what:='#otch#', replacement:=adotable1.fieldbyname('otch').asstring;);

//заміняємо #datar# на поле datar

e.activeworkbook.sheets.item[1].cells.replace(what:='#datar#', replacement:=adotable1.fieldbyname('datar').asstring;);

 

//робимо книгу видимої

e.visible:=true;

Приклад. Нехай за допомогою компонента adoquery1 на формі відібрані потрібні записи (виконана фільтрація). Необхідно для кожного знайденого запису сформувати свій окремий аркуш на підставі єдиного аркуша шаблону anketa.xlt.

try

//підключаємося до Excel

e:=getactiveoleobject('excel.application');

except

//якщо підключення не вдалося (Excel не запущений)

//створюємо новий об'єкт, запускаючи Excel

e:=createoleobject('excel.application');

end;

 

//створюємо новий документ на основі шаблону

e.workbooks.add(extractfilepath(application.Exename)+'shablon\anketa.xlt');

 

//копіюємо перший аркуш шаблону стільки разів,

//скільки є відібраних записів у запиті

for i:=1 to adoquery1.Recordcount-1 do

e.activeworkbook.sheets.item[1].copy(after:=w.activeworkbook.sheets.item[i]);

 

//стаємо на перший запис запиту

adoquery1.First;

//спочатку лічильник сформованих аркушів рівний 0

i:=0;

//запускаємо цикл до кінця набору записів у запиті

while not adoquery1.Eof do

begin

//збільшуємо лічильник сформованих аркушів

i:=i+1;

//заміняємо #fam# на поле fam

e.activeworkbook.sheets.item[1].cells.replace(what:='#fam#', replacement:= adoquery1.fieldbyname(‘fam’).asstring);

//заміняємо #imya# на поле imya

e.activeworkbook.sheets.item[1].cells.replace(what:='#imya#', replacement:= adoquery1.fieldbyname(‘imya’).asstring);

//заміняємо #otch# на поле otch

e.activeworkbook.sheets.item[1].cells.replace(what:='#otch#', replacement:= adoquery1.fieldbyname(‘otch’).asstring);

//заміняємо #datar# на поле datar

e.activeworkbook.sheets.item[1].cells.replace(what:='#datar#', replacement:= adoquery1.fieldbyname(‘datar’).asstring);

//переходимо, щна наступний запис у запиті

adoquery1.Next;

end;

 

//робимо книгу видимою

e.visible:=true;

 


<== попередня лекція | наступна лекція ==>
Робота з аркушами книги в Microsoft Excel | Формування таблиці


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн