Skip to main content

IExcelSchemaProvider.GetSchema(String, Stream, ExcelDocumentFormat, ExcelSourceOptionsBase, CancellationToken) Method

Returns the schema of an Excel data source.

Namespace: DevExpress.DataAccess.Excel

Assembly: DevExpress.DataAccess.v22.2.dll

NuGet Package: DevExpress.DataAccess


FieldInfo[] GetSchema(
    string fileName,
    Stream stream,
    ExcelDocumentFormat streamDocumentFormat,
    ExcelSourceOptionsBase optionsBase,
    CancellationToken token


Name Type Description
fileName String

A String value.

stream Stream

A Stream object.

streamDocumentFormat ExcelDocumentFormat

An ExcelDocumentFormat enumeration value.

optionsBase ExcelSourceOptionsBase

An ExcelSourceOptionsBase descendant.

token CancellationToken

A CancellationToken structure.


Type Description

An array of FieldInfo objects.


This example shows how to customize the schema of the ExcelDataSource using the ExcelDataSource.Schema property. To do this, perform the following steps.

  • Create an ExcelDataSource with the required settings.
  • Retrieve the available fields (FieldInfo objects) using the IExcelSchemaProvider.GetSchema method.
  • Iterate through the collection of fields, specify their properties and add all fields to the ExcelDataSource.Schema collection.
// Creates an Excel data source and selects the specific cell range from the SalesPerson worksheet.
ExcelDataSource excelDataSource = new ExcelDataSource();
excelDataSource.Name = "Excel Data Source";
excelDataSource.FileName = HostingEnvironment.MapPath(@"~/App_Data/ExcelDataSource.xlsx");
ExcelWorksheetSettings worksheetSettings = new ExcelWorksheetSettings("SalesPerson", "A1:L2000");
excelDataSource.SourceOptions = new ExcelSourceOptions(worksheetSettings);

// Specifies the fields that will be available for the created data source.
IExcelSchemaProvider schemaProvider = excelDataSource.GetService(typeof(IExcelSchemaProvider)) 
    as IExcelSchemaProvider;
FieldInfo[] availableFields = schemaProvider.GetSchema(excelDataSource.FileName, null, 
    ExcelDocumentFormat.Xlsx, excelDataSource.SourceOptions, System.Threading.CancellationToken.None);
List<string> fieldsToSelect = new List<string>() { "CategoryName", "ProductName", "Country", "Quantity", 
    "Extended Price"};
foreach (FieldInfo field in availableFields) {
    if (fieldsToSelect.Contains(field.Name)) {
    else {
        field.Selected = false;
See Also