Ниже представлены примеры для проверки структуры XLS-файла: наименования полей и их данных.
Для выполнения примера необходимо наличие файла XLS-файла с наименованием «Data» в корне диска C. Документ должен содержать лист с наименованием «ByRow».
Добавьте ссылки на системные сборки: Dal, Dt, Metabase, Ui.
Sub UserProc;
Var
MB: IMetabase;
Dtxlsprov: IDtExcelProvider;
Fields: IDtFieldDefinitions;
Field: IDtFieldDefinition;
namField, Val: string;
v: Array;
i: Integer;
s: double;
rez: boolean;
Begin
// Получим репозиторий
MB := MetabaseClass.Active;
// Создадим объект для импорта данных из файла XLS
Try
dtxlsprov := New DtExcelProvider.Create;
// Укажем источник данных
dtXlsProv.File := "C:\Data.xls";
// Запрос у источника данных из листа «ByRow»
dtXlsProv.Query := "select * from [" + "ByRaw" + "$]";
// Включим режим импорта из столбцов, содержащих разные типы данных
dtXlsProv.ImexMode := 1 As DtExcelImexMode;
dtXlsProv.CheckFieldName := True;
// Откроем источник данных
dtXlsProv.Open;
// Выведем в окно консоли количество полей открытого источника
Fields := dtXlsProv.Fields;
Debug.WriteLine("Документ открыт = " + dtXlsProv.Active.ToString);
Debug.WriteLine("Количество полей = " + Fields.Count.ToString);
// Выведем в окно консоли наименования полей источника
namField := "Наименования полей - ";
For Each Field In Fields Do
namField := namField + Field.Name + "|" + Field.DataType.ToString + "; "
End For;
Debug.WriteLine(namField);
// Выведем в окно консоли данные полей источника
Debug.WriteLine("Данные:");
Except On e: exception Do
WinApplication.InformationBox("Ошибка. Данные не прочитаны");
End Try;
While Not dtXlsProv.Eof Do
Val := "";
dtXlsProv.Fetch(v);
For i := 0 To v.Length - 1 Do
val := val + v[i] + " ; ";
End For;
Debug.WriteLine(val);
End While;
// Закрываем источник данных
dtXlsProv.Close;
End Sub UserProc;
После выполнения примера в окно консоли будет выведена информация по данным, содержащимся в файле. Будет выведено:
количество полей;
наименования полей;
данные полей указанного файла.
Если данные указанного файла окажутся заданными некорректно и не будут прочитаны, то будет выведено сообщение об ошибке.
См. также: