2

I have DataGridView and when I display export to excel sheet button following error appeared:

(Old format or invalid type library. (Exception from HRESULT: 0x80028018  (TYPE_E_INVDATAREAD)))

here
(
xlWorkBook = xlApp.Workbooks.Add(misValue);
)

and this reference which I used (Microsoft excel 12.0)

 private void button1_Click(object sender, EventArgs e)
    {
         Microsoft.Office.Interop.Excel.Application xlApp ;
        Microsoft.Office.Interop.Excel.Workbook xlWorkBook ;
        Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet ;
        object misValue = System.Reflection.Missing.Value;

        xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
        xlWorkBook = xlApp.Workbooks.Add(misValue);
        xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
        int i = 0;
        int j = 0; 

        for (i = 0; i <= DGData.RowCount  - 1; i++)
        {
            for (j = 0; j <= DGData.ColumnCount  - 1; j++)
            {
                DataGridViewCell cell = DGData[j, i];
                xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
            }
        }

        xlWorkBook.SaveAs("csharp.net-informations.xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Microsoft.Office.Interop.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 c:\\csharp.net-informations.xls");
    }

2 Answers 2

1

Error might be because the user local settings are different from the office version, the solution below might work for you, try it and let us know what happens:

Before creating Excel object

System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

After closing Excel:

System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
Sign up to request clarification or add additional context in comments.

Comments

0
  xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();

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

Exceptions Appearing on these lines

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.