Экспортируйте данные окна списка в Excel без получения COMException с HRESULT: 0x800AC472 - PullRequest
0 голосов
/ 18 февраля 2019

Я получаю сообщение об ошибке ComException при экспорте данных в Excel. Как я могу плавно экспортировать данные списка в Excel, изменив этот код. Я искал решение, но не могу найти подходящий ответ, чтобы это исправить.

Есть идеи, что я делаю не так?

Код

private void btnExport_Click(object sender, EventArgs e)
    {
        int i = 1,j=0,k=1;

        using (SaveFileDialog sfd = new SaveFileDialog() { Filter = "Excel Workbook|*.xlsx", ValidateNames = true }) 

        {
            if (sfd.ShowDialog() == DialogResult.OK) 
            {
                Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();

                /*Workbook wb = app.Workbooks.Add(XlSheetType.xlWorksheet);
                Worksheet ws = (Worksheet)app.ActiveSheet;*/
                app.Visible = true;
                Microsoft.Office.Interop.Excel.Workbook wb = app.Workbooks.Add(Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);
                Microsoft.Office.Interop.Excel.Worksheet ws = ((Microsoft.Office.Interop.Excel.Worksheet)app.ActiveSheet);


                // inserting colums names into cells

                foreach (ColumnHeader header in lst.Columns)
                {
                    ws.Cells[1, i] = header.Text;
                    i++;


                }
                i = 2;

                foreach (ListViewItem item in lst.Items) 
                {
                    j = 1;
                    foreach (ListViewItem.ListViewSubItem lvs in item.SubItems)
                    {




                             ws.Cells[i, j] = lvs.Text;
                             j++;



                    }

                        i++;  

                }
               /* wb.SaveAs(sfd.FileName, XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, true, false, XlSaveAsAccessMode.xlNoChange,
                    XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing);*/
                wb.SaveAs(sfd.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing);
                wb.Close(false, Type.Missing, Type.Missing);
                app.Quit();
                app.Quit();
                   MessageBox.Show("Your Data has been Exported Successfully","Message", MessageBoxButtons.OK, MessageBoxIcon.Information);



            }

        }
    }
...