Principales respuestas
Descargar cabecera y evitar dar clic en la misma en un DataGridView C#

Pregunta
-
Buenas tardes,
Tengo un inconveniente al descargar un archivo excel, no descarga la cabecera del DataGrigView solo los datos asignados en cada columna y fila
Quisiera que también descargara la cabecera del datagridview.
Ademas, evitar borrar y/o desordenar los datos cuando se da clic en la cabecera
La anterior imagen muestra como cambia todo al oprimir en la cabecera.
Agradecería su colaboración
Respuestas
-
Itera por las columnas de la misma manera como lo has hecho con las filas, es muy simple:
try { //... hoja_trabajo = (Worksheet)libros_trabajo.Worksheets.get_Item(1); //Agregar encabezado foreach (DataGridViewColumn col in dataGridView1.Columns) hoja_trabajo.Cells[1, col.Index + 1] = col.HeaderText; //Agregar filas de datos foreach (DataGridViewRow row in dataGridView1.Rows) foreach (DataGridViewCell cell in row.Cells) hoja_trabajo.Cells[2 + row.Index, cell.ColumnIndex + 1] = Convert.ToString(cell.Value); libros_trabajo.SaveAs(fichero.FileName, XlFileFormat.xlWorkbookNormal); libros_trabajo.Close(true); } catch (Exception ex) { MessageBox.Show(ex.Message); }
Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.- Marcado como respuesta Jairo Arturo Cifuentes viernes, 4 de agosto de 2017 14:01
-
Hola
Revisa este link Trabajar con archivos Excel desde WindowsForms (SpreadSheetLight) se trata de una manera fácil de trabajar con archivos Excel.
Saludos
Pedro Ávila
"El hombre sabio querrá estar siempre con quien sea mejor que él."
Lima - Perú- Marcado como respuesta Jairo Arturo Cifuentes viernes, 4 de agosto de 2017 14:02
-
Hola Jairo, para el caso de la cabezera, evitar el ordenamiento ascendente y descendente colocas luego de cargar el Grid
foreach (DataGridViewColumn Col in Dgv.Column) { Col.SortMode = DataGridViewColumnSortMode.NotSortable;
Para entender el problema de la carga del el Excel, deberías cargaqr el código para analizarlo
- Marcado como respuesta Jairo Arturo Cifuentes viernes, 4 de agosto de 2017 14:01
-
Claro, pero asegúrate de que sea luego de cargar los datos y de cerrar al archivo, para evitar el error de archivo ya se encuentra abierto. Cuando utilices OpenfileDialog carga en una variable string el path del archivo
ej: string Path = fichero.FileName
y luego lo invocas con ProssesStar
System.Diagnostics.Process.Start(Path)
Saludos
- Marcado como respuesta Jairo Arturo Cifuentes viernes, 4 de agosto de 2017 15:49
Todas las respuestas
-
Hola Jairo, para el caso de la cabezera, evitar el ordenamiento ascendente y descendente colocas luego de cargar el Grid
foreach (DataGridViewColumn Col in Dgv.Column) { Col.SortMode = DataGridViewColumnSortMode.NotSortable;
Para entender el problema de la carga del el Excel, deberías cargaqr el código para analizarlo
- Marcado como respuesta Jairo Arturo Cifuentes viernes, 4 de agosto de 2017 14:01
-
Gracias!!! lo del ordenamiento me funciono PERFECTAMENTE...........
Aqui está el código para la descarga:
private void ExportarDataGridViewExcel(DataGridView dataGridView1)
{
SaveFileDialog fichero = new SaveFileDialog();
fichero.Filter = "Excel (*.xls) | *.xls;";
if (fichero.ShowDialog() == DialogResult.OK)
{
Microsoft.Office.Interop.Excel.Application aplicacion;
Workbook libros_trabajo;
Worksheet hoja_trabajo;
aplicacion = new Microsoft.Office.Interop.Excel.Application();
libros_trabajo = aplicacion.Workbooks.Add();
hoja_trabajo = (Worksheet)libros_trabajo.Worksheets.get_Item(1);
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
try
{
hoja_trabajo.Cells[i + 1, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
catch (Exception)
{
hoja_trabajo.Cells[i + 1, j + 1] = " ";
}
if (hoja_trabajo.Cells[i + 1, j + 1] == null)
{
hoja_trabajo.Cells[i + 1, j + 1] = " ";
}
}
}
libros_trabajo.SaveAs(fichero.FileName, XlFileFormat.xlWorkbookNormal);
libros_trabajo.Close(true);
}
}private void btnDescargar_Click_1(object sender, EventArgs e)
{
ExportarDataGridViewExcel(dataGridView1);
}Nose como descargar el encabezado...
-
Itera por las columnas de la misma manera como lo has hecho con las filas, es muy simple:
try { //... hoja_trabajo = (Worksheet)libros_trabajo.Worksheets.get_Item(1); //Agregar encabezado foreach (DataGridViewColumn col in dataGridView1.Columns) hoja_trabajo.Cells[1, col.Index + 1] = col.HeaderText; //Agregar filas de datos foreach (DataGridViewRow row in dataGridView1.Rows) foreach (DataGridViewCell cell in row.Cells) hoja_trabajo.Cells[2 + row.Index, cell.ColumnIndex + 1] = Convert.ToString(cell.Value); libros_trabajo.SaveAs(fichero.FileName, XlFileFormat.xlWorkbookNormal); libros_trabajo.Close(true); } catch (Exception ex) { MessageBox.Show(ex.Message); }
Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.- Marcado como respuesta Jairo Arturo Cifuentes viernes, 4 de agosto de 2017 14:01
-
Hola
Revisa este link Trabajar con archivos Excel desde WindowsForms (SpreadSheetLight) se trata de una manera fácil de trabajar con archivos Excel.
Saludos
Pedro Ávila
"El hombre sabio querrá estar siempre con quien sea mejor que él."
Lima - Perú- Marcado como respuesta Jairo Arturo Cifuentes viernes, 4 de agosto de 2017 14:02
-
Excelente muchas gracias!!!!! aunque descarga normal me sale el siguiente error y no e podido solucionarlo
También me gustaría saber si existe la forma de que al momento de descargar el archivo se abra automáticamente...
- Editado Jairo Arturo Cifuentes viernes, 4 de agosto de 2017 14:10
-
-
Claro, pero asegúrate de que sea luego de cargar los datos y de cerrar al archivo, para evitar el error de archivo ya se encuentra abierto. Cuando utilices OpenfileDialog carga en una variable string el path del archivo
ej: string Path = fichero.FileName
y luego lo invocas con ProssesStar
System.Diagnostics.Process.Start(Path)
Saludos
- Marcado como respuesta Jairo Arturo Cifuentes viernes, 4 de agosto de 2017 15:49
-