excelcreateobject

Функция создания объекта для доступа к файлу Excel

Синтаксис:

id = excelcreateobject;

Аргументы:

Имя Тип данных Описание
    Функция не имеет аргументов

Описание:

excelcreateobject – функция создает объект в памяти, соответствующий файлу Excel.

Результат:

Имя Тип данных Описание
id integer Функция возвращает указатель на созданный пустой объект, соответствующий файлу Excel

Пример 1:

initialization
id = excelcreateobject;
afilename = expandfilename( "10KBA-MMF0004.xls" );
seterrorstr("Открываем файл "+afilename,0)
excelopendocument(id, afilename);
row_count = excelgetrowcount(id, 1);
col_count = excelgetcolcount(id, 1);
start_row = 8;
if row_count > start_row then 
for(i=start_row,row_count) begin
s = excelgettext(id, 1, i, 1);
if s <> "" then begin
seterrorstr(s,0)
end
else
goto end_of_table;
end;
end_of_table:
freeobject(id);
end;

В результате выполнения примера, происходит открытие файла и получение значения из первой ячейки каждой строки с выводом его в окно сообщений.

Пример 2:

function ReadExcelFileAndSyncControlPoints(aExcelFileName: string)
id = excelcreateobject;
seterrorstr("Открываем файл со списком датчиков "+aExcelFileName,0)        
excelopendocument(id, aExcelFileName);
row_count = excelgetrowcount(id, 1);
col_count = excelgetcolcount(id, 1);           
start_row = 8;
cat_name  = "Датчики";
//Строим список KKS кодов датчиков
MetersList = createstringlist;    
OldMetersList = createstringlist;
//Старый список групп
settextstringlist(OldMetersList, dbgetgroupnames(cat_name));
if row_count > start_row then 
for(i=start_row,row_count) begin
s = excelgettext(id, 1, i, 1);
if s <> "" then begin    
addstringlist( MetersList, s, i);        
end
else
goto end_of_table;                                                                                                                                                                 
end;
end_of_table:
MListHash  = createstringlisthash(MetersList,4095);                
//Проверяем наличие групп в базе 
for(i=0,countstringlist(MetersList) - 1) begin
s_group_name = getstringlist(MetersList,i);        
row_table    = gettagstringlist(MetersList,i);
//Добавляем необходимые группы в заданную категорию базы сигналов
if dbaddgroup(cat_name,s_group_name,1) then begin
seterrorstr("Добавлена группа сигналов в категорию "+cat_name+": " + s_group_name,0);    
end;
//Производим синхронизацию нужных полей таблицы с базой сигналов 
// столбец 2 - описание датчика        
dbsetsignaldata(cat_name,s_group_name,"Descript",excelgettext(id, 1, row_table, 2));
// столбец 28 - минимальный предел
dbsetsignalevalstring(cat_name,s_group_name,"Xmin","");                              //Формулу затираем        
dbsetsignaldata(cat_name,s_group_name,"Xmin", stringreplaceall( excelgettext(id, 1, row_table, 28), ",", ".")  ); //Значение выставляем
// столбец 29 - максимальный предел
dbsetsignalevalstring(cat_name,s_group_name,"Xmax","");
dbsetsignaldata(cat_name,s_group_name,"Xmax", stringreplaceall( excelgettext(id, 1, row_table, 29) , ",", ".") );
end;
//Удаляем лишние группы
for(i=0,countstringlist(OldMetersList) - 1) begin
s_group_name = getstringlist(OldMetersList,i);                
if getindexfromhash(MListHash, s_group_name) < 0 then begin                
if dbdelgroup(cat_name,s_group_name) then begin
seterrorstr("Удалены группа сигналов в категории "+cat_name+": " + s_group_name,0);
end;                                        
end;    
end;
//Уничтожаем объекты             
freeobject(MListHash);                                                                                                                            
freeobject(MetersList);
freeobject(id);
end;

initialization
//Чтение данных экселя и синхронизация с базой сигналов
ReadExcelFileAndSyncControlPoints( expandfilename( "10KBA-MMF0004.xls" ) );
end;

Пример использования функций экселя, чтобы синхронизировать таблицу с базой сигналов

Дополнительные материалы

Нет.