Nasuf Mutlu Ответов: 1

У меня возникли проблемы с передачей datagridview в excele.помогите пожалуйста


В чем причина, по которой я получаю ошибку, как в datagridview ниже? Есть ли кто-нибудь, кто находит решение?

System.InvalidCastException: The COM object of type '' Microsoft.Office.Interop.Excel.ApplicationClass' could not be assigned to interface type 'Microsoft.Office.Interop.Excel._Application'. This operation failed because the QueryInterface call in the COM component for the interface with the IID '{000208D5-0000-0000-C000-000000000046}' failed with the following error: Error loading type library / DLL. (HRESULT exception returned: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)). '


Код, который я написал, таков:;

saveFileDialog.InitialDirectory = "C:";
     saveFileDialog.Title = "Save as Excel File";
     saveFileDialog.FileName = "Data";
     saveFileDialog.Filter = "Excel Files(2003)|*.xls|Excel Files(2007)|*.xlsx";
     if (saveFileDialog.ShowDialog() != DialogResult.Cancel)
     {
         Microsoft.Office.Interop.Excel.Application excelApp = new
         Microsoft.Office.Interop.Excel.Application();
         excelApp.Application.Workbooks.Add(Type.Missing);

         excelApp.Columns.ColumnWidth = 20;

         for (int i = 1; i < dgwReport.Columns.Count + 1; i++)
         {
             excelApp.Cells[1, i] = dgwReport.Columns[i - 1].HeaderText;
         }

         for (int i = 0; i < dgwReport.Rows.Count; i++)
         {
             for (int j = 0; j < dgwReport.Columns.Count; j++)
             {
                 excelApp.Cells[i + 2, j + 1] = dgwReport.Rows[i].Cells[j].Value;
             }
         }
        excelApp.ActiveWorkbook.SaveCopyAs(saveFileDialog.FileName.ToString());
         excelApp.ActiveWorkbook.Saved = true;
         excelApp.Quit();
     }


Что я уже пробовал:

У меня возникли проблемы с передачей datagridview в excele.Помогите пожалуйста

1 Ответов

Рейтинг:
1

Richard Deeming

Либо у вас установлена неправильная версия Excel, либо возникла проблема с установкой Office.

В этом потоке StackOverflow есть различные предложения:
.net - класс не зарегистрировал ошибку при создании книги Excel в C# - переполнение стека[^]

Но более простым вариантом было бы использовать библиотеку, которая вообще не зависит от наличия установленного Excel - например:
GitHub - JanKallman/EPPlus: создание расширенных электронных таблиц Excel с использованием .NET[^]

DataTable sourceData = ...;

using (var package = new ExcelPackage())
{
    var sheet = package.Workbook.Worksheets.Add("Data");
    sheet.Cells["A1"].LoadFromDataTable(sourceData, true, TableStyles.Medium9);
    package.SaveAs(saveFileDialog.FileName);
}