Click here to Skip to main content
15,880,469 members
Please Sign up or sign in to vote.
3.00/5 (1 vote)
Hi Everyone,

I have datagridview in that 17 columns are text columns and 5 columns are Image columns,when I'm trying to export whole gridview data's along with images to EXCEL,getting "HRESULT: 0x800A03EC" Error..While debugging the code I'm getting the error on image column not able to export..
Can anybody help us to resolve this issue..


Here is my code which i used:

private void btnexportexcel_Click(object sender, EventArgs e)
{
    try
    {
        SaveFileDialog savefile = new SaveFileDialog();
        savefile.Filter = "Excel (*.xls)|*.xls";
        if (savefile.ShowDialog() == DialogResult.OK)
        {
            if (!savefile.FileName.Equals(string.Empty))
            {
                FileInfo finfo = new FileInfo(savefile.FileName);
                if (finfo.Extension.Equals(".xls"))
                {
                    Excel.Application xlApp;
                    Excel.Workbook xlWorkBook;
                    Excel.Worksheet xlWorkSheet;
                    object misValue = System.Reflection.Missing.Value;

                    xlApp = new Excel.Application();
                    xlWorkBook = xlApp.Workbooks.Add(misValue);
                    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2);
                    int i = 0;
                    int j = 0;

                    for (i = 0; i <= dataGridView1.RowCount - 1; i++)
                    {
                        for (j = 0; j <= dataGridView1.ColumnCount - 1; j++)
                        {
                            DataGridViewCell cell = dataGridView1[j, i];
                            xlWorkSheet.Cells.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
                            xlWorkSheet.Columns.AutoFit();

                            if (cell.Value.GetType() == typeof(Bitmap))
                            {
                                string image = Convert.ToString(dataGridView1.CurrentRow.Cells[i].Value);
                                Excel.Range oRange = (Excel.Range)xlWorkSheet.Cells[i + 1, j + 1];
                                float Left = (float)((double)oRange.Left);
                                float Top = (float)((double)oRange.Top);
                                const float ImageSize = 32;
                                xlWorkSheet.Shapes.AddPicture(image, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, Left, Top, ImageSize, ImageSize);
                                oRange.RowHeight = ImageSize + 2;
                            }
                            else
                            {
                                xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
                            }

                        }
                    }

                    xlWorkBook.SaveAs(savefile.FileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue,
                    Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                    xlWorkBook.Close(true, misValue, misValue);
                    xlApp.Quit();

                    releaseObject(xlWorkSheet);
                    releaseObject(xlWorkBook);
                    releaseObject(xlApp);

                    MessageBox.Show("Excel file created , you can find the file " + savefile.FileName);

                }
                else
                {
                    MessageBox.Show("Invalid file type");
                }
            }
            else
            {
                MessageBox.Show("You did pick a location " + "to save file to");
            }
        }
    }

    catch (Exception ex)
    {
        MessageBox.Show("Exception Occured", ex.Message);
    }
}
Posted
Updated 21-Apr-15 23:51pm
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900