IExcelSchemaProvider Interface
When implemented, provides the capability to customize the schema retrieved for an Excel/CSV file.
Namespace: DevExpress.DataAccess.Excel
Assembly: DevExpress.DataAccess.v24.2.dll
NuGet Package: DevExpress.DataAccess
#Declaration
#Related API Members
The following members return IExcelSchemaProvider objects:
#Remarks
Tip
The ExcelIExcel
service. You can inherit from this class to customize the settings required for generating an Excel data source.
#Example
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)) {
excelDataSource.Schema.Add(field);
}
else {
field.Selected = false;
excelDataSource.Schema.Add(field);
}
}
excelDataSource.Fill();