Oktavianus Misro Ответов: 1

Как экспортировать определенный столбец из datagridview в excel


Всем привет. Меня зовут Октавиан Мисро Адрианто.
Простите, если я задам очень простой вопрос, но я новичок в этом деле.

У меня есть Datagridview, который содержит информацию о студентах из базы данных sql server. теперь я хочу экспортировать данные в файл excel. файл был успешно экспортирован, но то, что я пытаюсь сделать, - это экспортировать определенные столбцы или, возможно, когда пользователь нажимает кнопку экспорта, появляется форма опции, в которой пользователь может выбрать, какой столбец он хочет экспортировать.

у кого-нибудь есть идея о том, как это сделать?

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

Вот мой код
private void btnExcel_Click(object sender, EventArgs e)
       {
           Cursor.Current = Cursors.WaitCursor;
           {
               try
               {
                   Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
                   Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
                   Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
                   app.Visible = true;
                   worksheet = workbook.Sheets["Sheet1"];
                   worksheet = workbook.ActiveSheet;
                   worksheet.Name = "Database Siswa";
                   //lokasi untuk menyimpan file Excel
                   SaveFileDialog saveDialog = new SaveFileDialog
                   {
                       Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*",
                       FilterIndex = 2
                   };

                   if (saveDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                   {
                       workbook.SaveAs(saveDialog.FileName);
                       MessageBox.Show("Data telah berhasil dieksport", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   }
                   try
                   {
                       for (int i = 0; i < dataGridViewSiswa.Columns.Count; i++)
                       {
                           worksheet.Cells[1, i + 1] = dataGridViewSiswa.Columns[i].HeaderText;
                       }
                       for (int i = 0; i < dataGridViewSiswa.Rows.Count; i++)
                       {
                           for (int j = 0; j < dataGridViewSiswa.Columns.Count; j++)
                           {
                               //milih kolom mana yang mau dieksport
                               if (dataGridViewSiswa.Rows[i].Cells[j].Value != null)
                               {
                                   worksheet.Cells[i + 2, j + 1] = dataGridViewSiswa.Rows[i].Cells[j].FormattedValue.ToString();
                               }
                               else
                               {
                                   worksheet.Cells[i + 2, j + 1] = "";
                               }
                           }
                       }
                   }
                   catch (System.Exception ex)
                   {
                       MessageBox.Show(ex.Message);
                   }

                   finally
                   {
                       app.Quit();
                       workbook = null;
                       worksheet = null;
                   }
               }
               catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); }
           }
       }

1 Ответов

Рейтинг:
1

Richard MacCutchan

Это просто вопрос настройки двух циклов, которые копируют данные столбца. Либо отрегулируйте количество столбцов, либо добавьте тесты в циклы, чтобы игнорировать определенные столбцы. Что-то вроде:

for (int i = 2; i < dataGridViewSiswa.Columns.Count - 1; i++)
{
    // ignore first two columns, and last 1
}

for (int i = 0; i < dataGridViewSiswa.Columns.Count; i++)
{
    if (i == 3)
        continue; // do not export column 4
}


Oktavianus Misro

Спасибо Вам @Richard MacCuthan
Я пробовал, но ничего не вышло. все столбцы по-прежнему экспортируются