IDtUnpivotProvider.Provider

Синтаксис

Provider: IDtProvider;

Описание

Свойство Provider определяет табличный источник данных, содержащий области.

Комментарии

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

Пример

Для выполнения примера в файловой системе предполагается наличие файла D:\Data.xls, содержащего данные, разделенные на области. Данные в файле расположены на листе с наименованием Лист1. Также в файловой системе должен быть файл D:\DataTransform.txt, в который будут экспортированы данные из C:\Data.xls.

Добавьте ссылку на системную сборку Dt.

Содержимое файла Data.xls

Sub UserProc;
Var
    XlsProvider: IDtExcelProvider;
    UnpivotProvider: IDtUnpivotProvider;
    FixCells: Array Of Integer;
    TextConsumer: IDtTextConsumer;
    ProviderFields, ConsumerFields: IDtFieldDefinitions;
    i, Row, Col: integer;
    Field, NewField: IDtFieldDefinition;
Begin
    // Создаем объект для импорта данных из файлов Microsoft Excel
    XlsProvider := New DtExcelProvider.Create;
    // Указываем файл с данными
    XlsProvider.File := "D:\Data.xls";
    // Указываем версию драйвера Microsoft Excel
    XlsProvider.DriverVersion := "Excel 8.0";

    // Задаем запрос для выборки данных
    XlsProvider.Query := "Select * From [Лист1$]";
    // Создаем объект для работы с табличным источником, разделенным на области
    UnpivotProvider := New DtUnpivotProvider.Create;
    // Задаем файл Microsoft Excel в качестве табличного источника данных
    UnpivotProvider.Provider := XlsProvider;
    // Задаем параметры области A4
    UnpivotProvider.DataBottom := 10;
    UnpivotProvider.DataRight := 9;
    UnpivotProvider.DataTop := 7;
    UnpivotProvider.DataWidth := 3;
    // Задаем параметры области A2
    UnpivotProvider.HeadBottom := 4;
    UnpivotProvider.HeadColumn := 1;
    UnpivotProvider.HeadTop := 1;
    // Задаем параметры области A3
    UnpivotProvider.LeftBegin := 1;
    UnpivotProvider.LeftEnd := 3;

    // Задаем фиксированные ячейки
    FixCells := New Integer[21];
    FixCells[00] := 1;
    FixCells[10] := 1;
    UnpivotProvider.FixedCells := FixCells;
    If UnpivotProvider.IsCorrect Then
        // Получаем поля из источника данных
        UnpivotProvider.FieldsFromFile;
        // Открываем источник данных
        UnpivotProvider.Open;
        // Создаем объект для экспорта данных в текстовый файл  
        TextConsumer := New DtTextConsumer.Create;
        // Указываем выходной файл
        TextConsumer.File := "D:\DataTransform.txt";
        // Задаем параметры экспорта
        TextConsumer.WriteHeader := True;
        // Задаем экспортируемые поля
        ProviderFields := UnpivotProvider.Fields;
        ConsumerFields := TextConsumer.Fields;
        For i := 0 To ProviderFields.Count - 1 Do
            Field := ProviderFields.Item(i);
            NewField := ConsumerFields.Add;
            NewField.DataType := Field.DataType;
            NewField.Name := Field.Name;
            NewField.Precision := Field.Precision;
            NewField.Size := Field.Size;
        End For;
        // Открываем и очищаем файл экспорта
        TextConsumer.Open;
        TextConsumer.Clear;
        // Выполняем экспорт из табличного источника данных, разделенного на области
        TextConsumer.PutProvider(UnpivotProvider);
        // Получаем соответствие ячейки в итоговом файле и ячейки в исходном файле
        UnpivotProvider.ToSource(10, Row, Col);
        Debug.WriteLine("В итоговом файле ячейке в строке с индексом 1 и " +
            "столбце с индексом 0 в исходном файле соответствует ячейка в строке с индексом "
            + Row.ToString + " и столбце с индексом " + Col.ToString);
        // Получаем соответствие ячейки в исходном файле и ячейки в итоговом файле
        UnpivotProvider.FromSource(71, Row, Col);
        Debug.WriteLine("В исходном файле ячейке в строке с индексом 7 и " +
            "столбце с индексом 1 в итоговом файле соответствует ячейка в строке с индексом "
            + Row.ToString + " и столбце с индексом " + Col.ToString);
        // Закрываем источник данных и экспортируемый файл
        UnpivotProvider.Close;
        TextConsumer.Close;
    End If;
End Sub UserProc;

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

См. также:

IDtUnpivotProvider