Сброс datagridview в ms excel.
I have requirement to dump from SQL DB to excel file.There is only one database in SQL and query output in data grid view needs to be dumped in excel sheet. I have written the following code and used <pre>Microsoft.Office.Interop.Excel.Application Excel.
После того, как все содержимое DataGridView успешно сброшено на лист excel, я получаю ошибку, прикрепленную к скриншоту видео.Прикрепление части кода, ответственной за дамп, выглядит следующим образом.
Я новичок в C# и уже давно не могу устранить эту проблему.
Код, используемый для дампа datagridview в excel, выглядит следующим образом.
//Start exporting to excel file. ------------------------------------------------------------------------------- using Microsoft.Office.Interop.Excel; //------------------------- private void button2_Click(object sender, EventArgs e) { /* creating Excel Application Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); // creating new WorkBook within Excel application Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); // creating new Excelsheet in workbook Microsoft.Office.Interop.Excel._Worksheet worksheet = null; // see the excel sheet behind the program app.Visible = false; // get the reference of first sheet. By default its name is Sheet1. // store its reference to worksheet worksheet = workbook.Sheets["Sheet1"]; worksheet = workbook.ActiveSheet; // changing the name of active sheet worksheet.Name = "Exported from gridview"; // storing header part in Excel for (int i = 1; i < dataGridView1.Columns.Count + 1; i++) { worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText; } // storing Each row and column value to excel sheet for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { for (int j = 0; j < dataGridView1.Columns.Count; j++) { worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); } } //---------------------------------------- // Save the file workbook.SaveAs(("D:\\EXCEL\\AFAS_Report_Created_on_" + DateTime.Now.ToShortDateString() + ".xls"), Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing); MessageBox.Show("Your export in excel is complete.Please close this excel before createing a new one."); // Exit from the application app.Visible = true; app.Quit();===============================*/ Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application(); Workbook wb = Excel.Workbooks.Add(XlSheetType.xlWorksheet); Worksheet ws = (Worksheet)Excel.ActiveSheet; Excel.Visible = true; ws.Cells[1, 1] = "Name of place"; ws.Cells[1, 2] = "Element Name"; ws.Cells[1, 3] = "No"; ws.Cells[1, 4] = "Make Name"; ws.Cells[1, 5] = "Model name"; for (int i = 1; i < dataGridView1.Columns.Count + 1; i++) { ws.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText; } // storing Each row and column value to excel sheet for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { for (int j = 0; j < dataGridView1.Columns.Count; j++) { ws.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); } } int rowCount = ((System.Data.DataTable)this.dataGridView1.DataSource).Rows.Count; MessageBox.Show("You have exported " + rowCount.ToString() + " rows.Please close this excel before creating a new one."); Excel.Quit(); } //End of dump to excel file. //------------------------------
-----------------------------------------------------------------------------------
Это дает,
----------------------------------------------------
Произошло COMException.
При первом же случайном исключении типа ' System. Runtime.InteropServices.COMException ' произошло в mscorlib.dll. Дополнительная информация: исключение из HRESULT:0x800A03EC
-------------------------------------------
Советы по устранению неполадок:
Проверьте свойство error Code для исключения, чтобы определить HRESULT, возвращаемый COM-объектом.
-------------------------------------------------------------------------
Также в задаче управление несколькими экземплярами EXCEL.exe бежит.
Может ли кто-нибудь помочь мне устранить эту проблему?
Что я уже пробовал:
Попробовал из другого кода проект форума и Stack overflow. Есть много сообщений по этому поводу.Но у меня это не сработало.Я тоже новичок в C#.