Комуникация с MS Excel в Делфи, използвайки оле, ASD-мек

Здравейте скъпи колеги!

Всеки от нас рано или късно се сблъскват с задачи за обмен на данни с приложения на MS Office. Един от тях - това е MS Excel. И това е за взаимодействието с продукт MS Office обсъжда в тази статия.

Един от начините за взаимодействие Delphi в MS Excel - е да се свърже с него като обект OLE.

И първото нещо, което трябва да се провери и ако MS Excel е инсталиран на компютъра на потребителя, по принцип.
За това ние използваме функция CLSIDFromProgID. кои търсения регистъра за CLSID премина ProgID:
Помощ от MSDN: Метод CLSIDFromProgID
Опции:
pszProgID. POleStr - Низ с името на обекта
CLSID. TCLSID - указател към TGUID структура, в която предава засечения обект;
възвръщаемост:
HRESULT - Резултатът, който може да бъде:
S_OK - обектът е намерена;
CO_E_CLASSSTRING - Регистрираното CLSID за PROGID е невалиден;
REGDB_E_WRITEREGDB - CLSID Грешка при запис в системния регистър.
От тези резултати се нуждаем S_OK.
пиши Funk Ексел да се определи дали потребителят е:

Ако е инсталиран Excel, а след това ще се свърже с него. Можете да направите това по два начина: GetActiveOleObject - Вземи линк към вече изпълнявано копие на Excel или CreateOleObject - Създаване на нова инстанция на Excel.
Ако имаме задачата да получава данни от работещ Excel. тогава ние трябва да използваме първия вариант, в други случаи, опитайте да се свържете, и ако не, тогава ние създаваме.
2 Нека пишат функции да се свързват и да започнат нов XlsConnect XlsStart:
FXlsApp добавите променлива от тип Variant. който ще съдържа линк към обекта Excel.

Сега можете да добавите бутон, за да кликнете, които се свързват към MS Excel с помощта на писмени функции:

По подразбиране прозореца на Excel се стартира във фонов режим. String FXlsApp.Visible: = True; Excel прави видими прозореца на фона.

прозорец Excel пътува без товар и искате да добавите книга за него. Това се прави с помощта на метод WorkBooks.Add. която добавя нова работна книга или отворен запазена по-рано, ако укажете пътя до файла.
Добавяне на процедура, която ще го направи:

Book добавя, сега ние ще се опитаме да напиша нещо в него.

Къде Row - индексът на ред и Col - индекс на колона, която започва с един.

Къде Range - множество клетки, и A1 - познат на координати Excel клетки.
Както може да се уточни координира диапазон. Например, кодът

въведете номера 5, всички клетки с А3 на A10. и кода

предоставят една и съща гама от светло зелено.
В обратна посока, това е да се получат данни от Excel. Тя работи по същия начин. ред

Показва съобщение със съдържанието на клетката с координати: String = 5, колона = 1.

След като сме взели необходимите ни манипулирането на Excel. ние можем да спестим получената книга във файл със следната команда:

Къде ActiveWorkbook - действителната книга.
И за да затворите командния заявление Excel:

Как да разберем тази възможност Excel контрол от Делфи не са ограничени. И там е една сравнително прост начин да се научите как да се извърши необходимите действия с Excel от Delphi.
Тя се нарича - макроси.

Нека да разгледаме по-, че е така, той пише за нас тук:
При избор - за да изберете интервала от потребителски свойства:
HorizontalAlignment = xlCenter - Хоризонтална ориентация = центъра.
VerticalAlignment = xlBottom - вертикална ориентация - по протежение на долния ръб.
WrapText = False - Събиране на текста се казва - изключен.
Ориентация = 0 - Ориентация 0 градуса.
AddIndent = False - Използване автоматичен отстъп за включване / изключване.
IndentLevel = 0 - ниво отстъп 0.
ShrinkToFit = False - Компресиране колона размер на текста за включване / изключване.
ReadingOrder = xlContext - Процедура за четене контекста.
MergeCells = False - слети клетки за включване / изключване
Завършва с - раздел Край със специален обхват.
Selection.Merge - Обединяване на избрания диапазон.

Сега ние ще се опитаме да се съчетаят клетките на Delphi:

Изберете желания диапазон от нас.

Обединяване клетки желаните свойства. Или използване на метода:

По този начин можете да получите кода за почти всяка манипулация.
И ако някой имот или метод повдига въпроси, можете да получите помощ от MSDN.

Имайте предвид особеностите на работа с масиви в VBA. Индексите на масиви в Делфи завой в квадратни скоби, а в VBA те ще бъдат в кръг. И кода в Делфи

в VBA ще изглежда така

По-долу е малка Често задавани въпроси за взаимодействието с Excel от Делфи

Как да определим стойностите на константите в Excel за използване в Delphi?

Как да деактивираме съобщенията в заключенията на Excel?

Как да получите списък с книгите на Excel?

Как да изключите мрежата?