How to convert an Excel worksheet to a high-resolution image?
29 Nov 20243 minutes to read
Essential® XlsIO allows you to convert an Excel worksheet to a high-resolution image. This can be achieved by converting the worksheet to a Metafile and then resetting the resolution using a custom ResetResolution method.
The following code example illustrates how to convert an Excel worksheet to a high-resolution image.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Excel2013;
IWorkbook workbook = application.Workbooks.Open("InputTemplate.xlsx");
IWorksheet worksheet = workbook.Worksheets[0];
//Convert the worksheet to EMF
Image image = worksheet.ConvertToImage(1, 1, 22, 9,
ImageType.Metafile, null);
//Reset the resolution of the image
image = ResetResolution(image as Metafile, 300);
//Save the image
image.Save("Output.jpg", ImageFormat.Jpeg);
}
//Helper method to reset the resolution of the image
private static Bitmap ResetResolution(Image metaFile, float resolution)
{
int newWidth = (int)(metaFile.Width * resolution / metaFile.HorizontalResolution);
int newHeight = (int)(metaFile.Height * resolution / metaFile.VerticalResolution);
Bitmap bitmap = new Bitmap(newWidth, newHeight);
bitmap.SetResolution(resolution, resolution);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.DrawImage(metaFile, 0, 0);
graphics.Dispose();
return bitmap;
}
Using excelEngine As ExcelEngine = New ExcelEngine()
Dim application As IApplication = excelEngine.Excel
application.DefaultVersion = ExcelVersion.Excel2013
Dim workbook As IWorkbook = application.Workbooks.Open("WorkSheetToImage.xlsx")
Dim worksheet As IWorksheet = workbook.Worksheets(0)
'Convert worksheet to EMF
Dim image As Image = worksheet.ConvertToImage(1, 1, lastRow, lastColumn,
ImageType.Metafile, Nothing)
'Reset the resolution of the image
image = ResetResolution(CType(image,Metafile), 300)
'Save the image
image.Save("Output.jpg", ImageFormat.Jpeg)
End Using
'Helper method to reset the resolution of the image
Private Function ResetResolution(ByVal metaFile As Image,
ByVal resolution As Single) As Bitmap
Dim newWidth As Integer = CType((metaFile.Width
* (resolution / metaFile.HorizontalResolution)),Integer)
Dim newHeight As Integer = CType((metaFile.Height
* (resolution / metaFile.VerticalResolution)),Integer)
Dim bitmap As Bitmap = New Bitmap(newWidth, newHeight)
bitmap.SetResolution(resolution, resolution)
Dim graphics As Graphics = Graphics.FromImage(bitmap)
graphics.DrawImage(metaFile, 0, 0)
graphics.Dispose
Return bitmap
End Function