ExcelDataSource.Schema Property
Gets the ExcelDataSource schema.
Namespace: DevExpress.DataAccess.Excel
Assembly: DevExpress.DataAccess.v18.1.dll
Declaration
Property Value
Type | Description |
---|---|
FieldInfoList | A FieldInfoList object that is the ExcelDataSource schema. |
Remarks
The ExcelDataSource allows you to specify its schema using the Schema property that provides access to a collection of FieldInfo objects.
The FieldInfo class exposes the FieldInfo.Name and FieldInfo.Type properties allowing you to specify the field name and type, respectively.
The FieldInfo.Selected property specifies whether or not the field will be displayed within the field list.
Note
After customizing the Excel data source schema at runtime, call the ExcelDataSource.RebuildResultSchema method to apply the changes.
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("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();
Related GitHub Examples
The following code snippets (auto-collected from DevExpress Examples) contain references to the Schema property.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.