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
//Чтение данных Excel и синхронизация с базой сигналов
ReadExcelFileAndSyncControlPoints( expandfilename( "10KBA-MMF0004.xls" ) );
end;
Пример использования функций Excel, чтобы синхронизировать таблицу с базой сигналов
Дополнительные материалы
Нет.