экспорт данных в datagridview в форму окна Excel лист - PullRequest
2 голосов
/ 05 марта 2011

У меня есть DataGridView, и при отображении кнопки «Экспорт в Excel» появляется следующая ошибка:

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

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

и эта ссылка, которую я использовал (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 ]

1 голос
/ 05 марта 2011

Ошибка может быть связана с тем, что локальные настройки пользователя отличаются от версии для офиса, приведенное ниже решение может помочь вам, попробуйте и сообщите нам, что происходит:

Перед созданием объекта Excel

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

После закрытия Excel:

System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
0 голосов
/ 16 августа 2013
  xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();

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

Исключения, появляющиеся в этих строках

...