Worksheet to Image conversion in Excel Library
26 May 202210 minutes to read
Assemblies Required
Refer to the following links for assemblies/nuget packages required based on platforms to convert the worksheet to image.
NOTE
Worksheet to Image conversion works proper in Blazor server-side alone and not in client-side.
Convert as bitmap
The following code shows how to convert the specified range of rows and columns in the worksheet to bitmap.
// Convert as bitmap
Image image = sheet.ConvertToImage(1, 1, 10, 20);
image.Save("Sample.png", ImageFormat.Png);
'Convert as bitmap
Dim image As Image = sheet.ConvertToImage(1, 1, 10, 20)
image.Save("Sample.png", ImageFormat.Png)
//Worksheet To Image conversion can be performed by referring .NET Standard assemblies in UWP platform.
// Initialize XlsIORenderer
application.XlsIORenderer = new XlsIORenderer();
//Create a new memory stream to save the image
Stream stream = new MemoryStream();
//Convert worksheet to image and save it to stream.
worksheet.ConvertToImage(1, 1, 10, 20, stream);
// Initialize XlsIORenderer
application.XlsIORenderer = new XlsIORenderer();
//Create a new memory stream to save the image
Stream stream = new MemoryStream();
//Convert worksheet to image and save it to stream.
worksheet.ConvertToImage(1, 1, 10, 20, stream);
// Initialize XlsIORenderer
application.XlsIORenderer = new XlsIORenderer();
//Create a new memory stream to save the image
Stream stream = new MemoryStream();
//Convert worksheet to image and save it to stream.
worksheet.ConvertToImage(1, 1, 10, 20, stream);
Save as stream
The following code snippet shows how to save a sheet as stream.
// Converts and save as stream
MemoryStream stream = new MemoryStream();
sheet.ConvertToImage(1, 1, 10, 20, ImageType.Metafile, stream);
'Converts and save as stream
Dim stream As MemoryStream = New MemoryStream()
sheet.ConvertToImage(1, 1, 10, 20, ImageType.Metafile, stream)
//Worksheet To Image conversion can be performed by referring .NET Standard assemblies in UWP platform.
// Initialize XlsIORenderer
application.XlsIORenderer = new XlsIORenderer();
//Create a new memory stream to save the image
Stream stream = new MemoryStream();
//Convert worksheet to image and save it to stream.
worksheet.ConvertToImage(1, 1, 10, 20, stream);
// Initialize XlsIORenderer
application.XlsIORenderer = new XlsIORenderer();
// Converts and save as stream
MemoryStream stream = new MemoryStream();
sheet.ConvertToImage(1, 1, 10, 20, stream);
// Initialize XlsIORenderer
application.XlsIORenderer = new XlsIORenderer();
// Converts and save as stream
MemoryStream stream = new MemoryStream();
sheet.ConvertToImage(1, 1, 10, 20, stream);
The complete code snippet of the previous options is given below.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Open("Sample.xlsx", ExcelOpenType.Automatic);
IWorksheet sheet = workbook.Worksheets[0];
//Convert as bitmap
Image image = sheet.ConvertToImage(1, 1, 10, 20);
image.Save("Sample.png", ImageFormat.Png);
//Converts and save as stream
MemoryStream stream = new MemoryStream();
sheet.ConvertToImage(1, 1, 10, 20, ImageType.Metafile, stream);
//Save the workbook to disk
workbook.SaveAs("Sample.xlsx");
//No exception will be thrown if there are unsaved workbooks
excelEngine.ThrowNotSavedOnDestroy = false;
}
Using excelEngine As ExcelEngine = New ExcelEngine()
Dim application As IApplication = excelEngine.Excel
application.DefaultVersion = ExcelVersion.Xlsx
Dim workbook As IWorkbook = application.Workbooks.Open("sample.xlsx", ExcelOpenType.Automatic)
Dim worksheet As IWorksheet = workbook.Worksheets(0)
'Convert as bitmap
Dim image As Image = worksheet.ConvertToImage(1, 1, 10, 20)
image.Save("Sample.png", ImageFormat.Png)
'Converts and save as stream
Dim stream As MemoryStream = New MemoryStream()
worksheet.ConvertToImage(1, 1, 10, 20, ImageType.Metafile, stream)
'Save the workbook to disk
workbook.SaveAs("Sample.xlsx")
'No exception will be thrown if there are unsaved workbooks.
excelEngine.ThrowNotSavedOnDestroy = False
End Using
//Worksheet To Image conversion can be performed by referring .NET Standard assemblies in UWP platform.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
//Gets assembly
Assembly assembly = typeof(App).GetTypeInfo().Assembly;
//Gets input Excel document from an embedded resource collection
Stream inputStream = assembly.GetManifestResourceStream("WorksheetToImage.Sample.xlsx");
IWorkbook workbook = application.Workbooks.Open(inputStream, ExcelOpenType.Automatic);
IWorksheet sheet = workbook.Worksheets[0];
//Initialize XlsIORenderer
application.XlsIORenderer = new XlsIORenderer();
//Initializes FileSavePicker
FileSavePicker savePicker = new FileSavePicker();
savePicker.SuggestedStartLocation = PickerLocationId.Desktop;
savePicker.SuggestedFileName = "Output";
savePicker.FileTypeChoices.Add("Image Files", new List<string>() { ".png",".jpeg",".jpg" });
//Creates a storage file from the FileSavePicker
StorageFile storageFile = await savePicker.PickSaveFileAsync();
//Converts and save to stream
var file = await storageFile.OpenAsync(FileAccessMode.ReadWrite);
Stream stream = file.AsStreamForWrite();
sheet.ConvertToImage(1, 1, 10, 20, stream);
await file.FlushAsync();
stream.Dispose();
}
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Open(File.OpenRead("Sample.xlsx"), ExcelOpenType.Automatic);
IWorksheet sheet = workbook.Worksheets[0];
//Initialize XlsIORenderer
application.XlsIORenderer = new XlsIORenderer();
//Converts and save as stream
MemoryStream stream = new MemoryStream();
sheet.ConvertToImage(1, 1, 10, 20, stream);
//Close and Dispose
workbook.Close();
stream.Dispose();
}
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
//Gets assembly
Assembly assembly = typeof(App).GetTypeInfo().Assembly;
//Gets input Excel document from an embedded resource collection
Stream inputStream = assembly.GetManifestResourceStream("WorksheetToImage.Sample.xlsx");
IWorkbook workbook = application.Workbooks.Open(inputStream);
IWorksheet sheet = workbook.Worksheets[0];
//Initializing XlsIORenderer
application.XlsIORenderer = new XlsIORenderer();
//Converts and save to stream.
MemoryStream stream = new MemoryStream();
sheet.ConvertToImage(1, 1, 10, 20, stream);
stream.Position = 0;
//Save the document as file and view the saved document
//The operation in SaveAndView under Xamarin varies among Windows Phone, Android, and iOS platforms. Refer to the xlsio/xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
DependencyService.Get<ISaveWindowsPhone>()
.SaveAndView("Test.png", "image/png", stream);
else
DependencyService.Get<ISave>().SaveAndView("Test.png", "image/png", stream);
}
A complete working example to convert Excel worksheet to image in C# is present on this GitHub page.
NOTE
- Instance of XlsIORenderer class is mandatory to convert the worksheet to image using .NET Standard assemblies.
- In .NET Standard, the Image format and quality can be specified using the ExportImageOptions class. By default the ImageFormat is set to PNG and ScalingMode is set to Best.
- Worksheet to image conversion is supported from .NET Framework 2.0 and .NET Standard 1.4 onwards.
Non-Supported Features:
- Subscript/Superscript
- Shrink to fit
- Shapes (except TextBox shape and Image)
- Complex conditional formatting
- Gradient fill is partially supported