Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2010, 05:42
eloy_ameneiros
 
Fecha de Ingreso: julio-2010
Mensajes: 93
Antigüedad: 13 años, 9 meses
Puntos: 0
Exportar datagridview generado en codigo a csv

Quiero guardar los datos de un grid que creo en el evento click de un boton. Lo que hago es crear el datagrid view, llenarlo con un datatable desde y una consulta sql, para después recorrerlo y exportarlo a excel.

El problema que tengo es que el archivo que me exporta está vacío. como puedo solucionarlo.

Os dejo el código del botón.

Un saludo.

private void bt_reciclar_Click(object sender, EventArgs e)
{
DataGridView dtg_campaña = new DataGridView();
string campaña = cmb_campañas.Text;
DialogResult dr = MessageBox.Show("¿Está seguro de que quiere reciclar la campaña " + campaña + "?", "Reciclar", MessageBoxButtons.OKCancel);

string concamp = @"SELECT *
FROM " + campaña;

DataTable dt = new DataTable();
da = new SqlDataAdapter(concamp, conexion);
da.Fill(dt);
dtg_campaña.DataSource = dt;
conexion.Close();

if(dr == DialogResult.OK)
{
nmExcel.ApplicationClass ExcelApp = new nmExcel.ApplicationClass();
ExcelApp.Application.Workbooks.Add(Type.Missing);
for (int i = 0; i < dtg_campaña.Rows.Count; i++)
{
DataGridViewRow Fila = dtg_campaña.Rows[i];
for (int j = 0; j < Fila.Cells.Count; j++)
{
ExcelApp.Cells[i + 1, j + 1] = Fila.Cells[j].Value;
}
}
SaveFileDialog CuadroDialogo = new SaveFileDialog();
CuadroDialogo.DefaultExt = "csv";
CuadroDialogo.FileName = campaña + " resultado " + DateTime.Now.ToString("dd-MM-yyyy");
CuadroDialogo.Filter = "CSV (Delimitado por comas)|*.csv";
CuadroDialogo.AddExtension = true;
CuadroDialogo.RestoreDirectory = true;
CuadroDialogo.Title = "Guardar";
CuadroDialogo.InitialDirectory = @"c:\";
if (CuadroDialogo.ShowDialog() == DialogResult.OK)
{
ExcelApp.ActiveWorkbook.SaveCopyAs(CuadroDialogo.F ileName);
ExcelApp.ActiveWorkbook.Saved = true;
CuadroDialogo.Dispose();
CuadroDialogo = null;
ExcelApp.Quit();
}
else
{
MessageBox.Show("Ha cancelado la exportación de los datos a Excel");
}
}

op.Show();
this.Hide();

}