This issue occurs when one of the imageColumn is having text and image both. Refer attached screenshot.
|
private void button1_Click(object sender, EventArgs e)
{
var options = new ExcelExportingOptions();
options.ExcelVersion = ExcelVersion.Excel2013;
options.CellExporting += Options_CellExporting1;
var excelEngine = sfDataGrid.ExportToExcel(sfDataGrid.View, options);
var workBook = excelEngine.Excel.Workbooks[0];
SaveFileDialog saveFilterDialog = new SaveFileDialog()
{
FilterIndex = 2,
Filter = "Excel 97 to 2003 Files(*.xls)|*.xls|Excel 2007 to 2010 Files(*.xlsx)|*.xlsx|Excel 2013 File(*.xlsx)|*.xlsx"
};
if (saveFilterDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
using (Stream stream = saveFilterDialog.OpenFile())
{
if (saveFilterDialog.FilterIndex == 1)
workBook.Version = ExcelVersion.Excel97to2003;
else if (saveFilterDialog.FilterIndex == 2)
workBook.Version = ExcelVersion.Excel2010;
else
workBook.Version = ExcelVersion.Excel2013;
workBook.SaveAs(stream);
}
if (MessageBox.Show(this, "Do you want to view the workbook?", "Workbook has been created", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
System.Diagnostics.Process.Start(saveFilterDialog.FileName);
}
}
public byte[] ImageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
return ms.ToArray();
}
private void Options_CellExporting1(object sender, Syncfusion.WinForms.DataGridConverter.Events.DataGridCellExcelExportingEventArgs e)
{
if (e.CellType == ExportCellType.RecordCell && e.ColumnName == "Location")
{
byte[] image = ImageToByteArray(Image.FromFile(@"..\..\Images\location.png"));
MemoryStream stream = new MemoryStream(image);
e.Range.HorizontalAlignment = Syncfusion.XlsIO.ExcelHAlign.HAlignCenter;
e.Range.Worksheet.Pictures.AddPicture(e.Range.Row, e.Range.Column, stream);
e.Range.Cells[0].Value = e.CellValue.ToString();
e.Handled = true;
}
} |