Экспорт C# winform в excel
Я пытаюсь экспортировать в Excel, при нажатии кнопки все швы идут хорошо.
когда я открываю файл, он просто показывает заголовок и одну строку..
все должно быть очень просто.
<pre>private void btnExcel_Click(object sender, EventArgs e) { { for (int i = 1; i <= 10; i++) { DataGridViewRow row = (DataGridViewRow)dataGridView1.RowTemplate.Clone(); } } Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel._Worksheet worksheet = null; try { worksheet = workbook.ActiveSheet; worksheet.Name = "ExportedFromDatGrid"; int cellRowIndex = 1; int cellColumnIndex = 1; for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { for (int j = 0; j < dataGridView1.Columns.Count; j++) { if (cellRowIndex == 1) { worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Columns[j].HeaderText; } else { worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Rows[i].Cells[j].Value.ToString(); } cellColumnIndex++; } cellColumnIndex = 1; cellRowIndex++; } SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*"; saveDialog.FilterIndex = 2; if (saveDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { workbook.SaveAs(saveDialog.FileName); MessageBox.Show("Export Successful"); } } catch (System.Exception ex) { MessageBox.Show(ex.Message); } finally { excel.Quit(); workbook = null; excel = null; } }
Что я уже пробовал:
редактирование кода интернет-поиска
Michael_Davies
Не то чтобы это был ответ, но разве это не должно быть dataGridView1.Columns.Граф-1?
for (int j = 0; j < dataGridView1.Columns.Count; j++)
Кроме того, внутренний цикл for по столбцам не будет хранить первую строку datagridview, так как вы используете настройку первой строки для установки заголовков, и данные не будут храниться так, как они есть в else.
Лично я бы так и сделал;
1. сохраните данные, начиная со строки 2 листа.
2. сохраните названия заголовков в верхней строке, строке 1 листа.
int cellRowIndex = 2; int cellColumnIndex; for (int i = 0; i < dataGridView1.Rows.Count - 1; i++, cellRowIndex++) { cellColumnIndex = 1; for (int j = 0; j < dataGridView1.Columns.Count - 1; j++, cellColumnIndex++) { worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Rows[i].Cells[j].Value.ToString(); } } cellColumnIndex = 1; for (int j = 0; j < dataGridView1.Columns.Count - 1; j++, cellColumnIndex++) { worksheet.Cells[1, cellColumnIndex] = dataGridView1.Columns[j].HeaderText; }