General Information
RadSpreadProcessing's document model allows you to easily open and save files of different formats. This article will share more details on the supported formats, available format providers, the additional assembly references each provider requires and the Format Providers Manager.
Supported formats
- Xlsx: Rich text format, which exports the whole content of a workbook: worksheets, formula values, formatting, hyperlinks etc.
- Xls: Rich text format, which exports the content of a workbook: worksheets, formula values, formatting, hyperlinks etc. Supported in older applications. This format is not supported in Silverlight.
- Xlsm: Rich text format, which exports all that is included in the Xlsx format with the addition of macro instructions.
- Pdf: Fixed format, which preserves the content of a workbook in independent from software or hardware manner.
- Csv(comma separated): Plain text format that saves the content of the cell in the active worksheet. The format strips all formatting and keeps only the result values of cells. These values are separated by a culture dependent delimiter.
- Txt(tab delimited): Plain text format, which preserves only the content of the cells in the active worksheet. The format does not save any formatting and keeps only the result values of the cells. These values are delimited via tabs.
- DataTable: This allows you to convert the DataTable that is coming form your database to a spreadsheet and vice versa.
In Q4 2024 Telerik Document Processing Libraries introduced a new timeout mechanism for importing and exporting documents. The Import and Export methods of all FormatProviders have a mandatory TimeSpan? timeout parameter after which the operation will be cancelled.
Format providers
The document model exposes separate format providers that work with each of the formats above:
-
XlsxFormatProvider for
.xlsx
files -
XlsFormatProvider for
.xls
files -
XlsmFormatProvider for
.xlsm
files -
PdfFormatProvider for
.pdf
files -
CsvFormatProvider for comma separated
.csv
files -
TxtFormatProvider for tab delimited
.txt
files -
DataTableFormatProvider for
DataTable
objects
Some FormatProviders require additional assembly references. Check them out in the Additional Assemlby References section.
Import and Export methods
All of the listed providers implement the IWorkbookFormatProvider
and IBinaryWorkbookFormatProvider
interfaces and, thus, share a common API that enables import and export of files. To conform to the interfaces each of the providers implements two methods that, respectively, turn a Stream
or byte[]
into a workbook and save the contents of the workbook into a Stream
or byte[]
. In the IWorkbookFormatProvider interface methods and IBinaryWorkbookFormatProvider interface methods sections below you can see the interfaces' declaration and an example usage of the Import and Export methods.
IWorkbookFormatProvider interface methods
public interface IWorkbookFormatProvider
{
string Name { get; }
string FilesDescription { get; }
IEnumerable<string> SupportedExtensions { get; }
bool CanImport { get; }
bool CanExport { get; }
// Import and Export methods with Stream support
void Export(Workbook workbook, Stream output);
Workbook Import(Stream input);
}
Example: Use FormatProver's Import() and Export() methods with Stream
array
var path = "MyWorkbook.xlsx";
Telerik.Windows.Documents.Spreadsheet.Model.Workbook workbook;
IWorkbookFormatProvider formatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.XlsxFormatProvider();
// Import
using (Stream input = new FileStream(path, FileMode.Open))
{
workbook = formatProvider.Import(input);
}
// Export
using (Stream output = new FileStream(path, FileMode.Create))
{
formatProvider.Export(workbook, output);
}
IBinaryWorkbookFormatProvider interface methods
public interface IBinaryWorkbookFormatProvider : IWorkbookFormatProvider
{
// Overloading IWorkbookFormatProvider's Import and Export methods to support byte[]
byte[] Export(Workbook workbook);
Workbook Import(byte[] input);
}
Example: Use FormatProver's Import() and Export() methods with byte[]
array
var path = "MyWorkbook.xlsx";
Telerik.Windows.Documents.Spreadsheet.Model.Workbook workbook;
IBinaryWorkbookFormatProvider formatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.XlsxFormatProvider();
// Import
byte[] fileAsByteArray = File.ReadAllBytes(path);
workbook = formatProvider.Import(fileAsByteArray);
// Export
byte[] workbookAsByteArray = formatProvider.Export(workbook);
For more examples of importing and exporting workbooks check out the Import/Load and Export/Save RadSpreadProcessing Workbook knowledge base article.
Additional assembly references
Unlike the CsvFormatProvider, TxtFormatProvider and DataTableFormatProvider classes, the other RadSpreadProcessing format providers require references to additional assemblies.
-
XlsxFormatProvider and XlsmFormatProvider additional assembly references
- Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.dll
- Telerik.Windows.Zip.dll
-
PdfFormatProvider
- Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.dll
-
XlsFormatProvider
- Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls.dll
Format Providers Manager
The document model of RadSpreadProcessing also contains a WorkbookFormatProvidersManager class, which exposes a whole set of useful static methods. The manager also allows you to specify a set of format providers you would like to use. Then you can import and export a file leaving the manager to choose the appropriate format provider to use. You only need to specify the extension of the file that you open or save.
More information on the Format Providers Manager and the WorkbookFormatProvidersManager class can be found in the dedicated Format Providers Manager article.
public class WorkbookFormatProvidersManager
{
public static IEnumerable<IWorkbookFormatProvider> FormatProviders { get; }
public static void Export(Workbook workbook, string extension, Stream output);
public static void Export(Workbook workbook, string extension, Stream output, IEnumerable<IWorkbookFormatProvider> formatProviders);
public static IWorkbookFormatProvider GetProviderByExtension(string extension);
public static IWorkbookFormatProvider GetProviderByName(string providerName);
public static IEnumerable<string> GetSupportedExtensions();
public static Workbook Import(string extension, Stream input);
public static Workbook Import(string extension, Stream input, IEnumerable<IWorkbookFormatProvider> formatProviders);
public static void RegisterFormatProvider(IWorkbookFormatProvider provider);
public static void UnregisterFormatProvider(IWorkbookFormatProvider provider);
}