I want to export the columns I pulled into the datagridview with Checkbox to Excel and Word. However, it also exports the hidden columns to Word and Excel that I have not checked with the checkboxes and that do not appear in the datagridview. I want to export only selected columns as shown in the image. What is the solution?
![](https://www.csharp.com/forums/uploadfile/56c12d/10312023212623PM/1_4llmTUMb2rMrB0SFewBxdQ.gif)
public void Export_DataGridView_To_Excel(DataGridView DGV, string filename)
{
string[] Alphabit = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
"N", "O","P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
string Range_Letter = Alphabit[DGV.Columns.Count];
string Range_Row = (DGV.Rows.Count + 1).ToString();
if (File.Exists(filename))
{
File.Delete(filename);
}
Excel.Application oApp;
Excel.Worksheet oSheet;
Excel.Workbook oBook;
oApp = new Excel.Application();
oBook = oApp.Workbooks.Add();
oSheet = (Excel.Worksheet)oBook.Worksheets.get_Item(1);
for (int x = 0; x < dataGridView3.Columns.Count; x++)
{
// creating Columns :
oSheet.Cells[1, x + 2] = dataGridView3.Columns[x].HeaderText;
}
for (int i = 0; i < dataGridView3.Columns.Count; i++)
{
for (int j = 0; j < dataGridView3.Rows.Count; j++)
{
// creating rows :
oSheet.Cells[j + 2, i + 2] = dataGridView3.Rows[j].Cells[i].Value;
}
}
//Add some formatting
Range rng1 = oSheet.get_Range("B1", Range_Letter + "1");
rng1.Font.Size = 14;
rng1.Font.Bold = true;
rng1.Cells.Borders.LineStyle = XlLineStyle.xlDouble;
rng1.Cells.Borders.Color = System.Drawing.Color.DeepSkyBlue;
rng1.Font.Color = System.Drawing.Color.Black;
rng1.HorizontalAlignment = XlHAlign.xlHAlignCenter;
rng1.Interior.Color = System.Drawing.Color.LightGray;
Range rng2 = oSheet.get_Range("B2", Range_Letter + Range_Row);
rng2.WrapText = false;
rng2.Font.Size = 12;
rng2.Cells.Borders.LineStyle = XlLineStyle.xlContinuous;
rng2.Cells.Borders.Color = System.Drawing.Color.DeepSkyBlue;
rng2.VerticalAlignment = XlVAlign.xlVAlignCenter;
rng2.Interior.Color = System.Drawing.Color.Azure;
rng2.EntireColumn.AutoFit();
rng2.EntireRow.AutoFit();
//Add a header row
oSheet.get_Range("B1", Range_Letter + "2").EntireRow.Insert(XlInsertShiftDirection.xlShiftDown, Missing.Value);
oSheet.Cells[1, 3] = "List of : list title ";
Range rng3 = oSheet.get_Range("B1", Range_Letter + "2");
rng3.Merge(Missing.Value);
rng3.Font.Size = 16;
rng3.Font.Color = System.Drawing.Color.Blue;
rng3.Font.Bold = true;
rng3.VerticalAlignment = XlVAlign.xlVAlignCenter;
rng3.Interior.Color = System.Drawing.Color.LightSkyBlue;
oBook.SaveAs(filename);
oBook.Close();
oApp.Quit();
// NASSIM LOUCHANI
}
private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source = siniflisteleri25.accdb; Jet OLEDB:Database Password = Fatih2541; Mode = ReadWrite"))
{
string query = "SELECT tcno,ono,isim,soyisim,cinsiyet,sinifi,dtarihi,atel,btel from ogrencibilgileri25 where sinifi='" + ComboBox1.Text + " '";
OleDbCommand command = new OleDbCommand(query, conn);
conn.Open();
var adapter = new OleDbDataAdapter(command);
var table = new System.Data.DataTable();
adapter.Fill(table);
dataGridView3.Columns["tcno"].Visible = tcnochk.Checked;
dataGridView3.Columns["dtarihi"].Visible = dogchk.Checked;
dataGridView3.Columns["dtarihi"].Visible = dogchk.Checked;
dataGridView3.Columns["atel"].Visible = atelchk.Checked;
dataGridView3.Columns["btel"].Visible = btelchk.Checked;
dataGridView3.DataSource = table;
conn.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "Export To Excel";
sfd.Filter = "To Excel (Xlsx)|*.xlsx";
sfd.FileName = "your document name";
if (sfd.ShowDialog() == DialogResult.OK)
{
Export_DataGridView_To_Excel(dataGridView3, sfd.FileName);
}
}