protected void ibExcele_Click(object sender, ImageClickEventArgs e)
{
// Crear un objeto SqlConnection, y luego pasar la ConnectionString al constructor.
SqlConnection Conection = new SqlConnection(CadenaString);
// Utilizar una variable para almacenar la instrucción SQL.
string SelectString = "SELECT id_pregunta, descripcion, opcion, valor_respuesta, COUNT(id_estudiante) AS Numero_Votos FROM respuestas_encuentas, preguntas WHERE respuestas_encuentas.id_pregunta = preguntas.id GROUP BY id_pregunta, opcion, descripcion, valor_respuesta";
SqlDataAdapter Adaptador = new SqlDataAdapter(SelectString, Conection);
DataSet DS = new DataSet();
// Abrir la conexión.
Conection.Open();
Adaptador.Fill(DS);
Conection.Close();
// Creamos un objeto Excel.
Excel.Application Mi_Excel = default(Excel.Application);
// Creamos un objeto WorkBook. Para crear el documento Excel.
Excel.Workbook LibroExcel = default(Excel.Workbook);
// Creamos un objeto WorkSheet. Para crear la hoja del documento.
Excel.Worksheet HojaExcel = default(Excel.Worksheet);
// Iniciamos una instancia a Excel, y Hacemos visibles para ver como se va creando el reporte,
// podemos hacerlo visible al final si se desea.
Mi_Excel = new Excel.Application();
Mi_Excel.Visible = true;
/* Ahora creamos un nuevo documento y seleccionamos la primera hoja del
* documento en la cual crearemos nuestro informe.
*/
// Creamos una instancia del Workbooks de excel.
LibroExcel = Mi_Excel.Workbooks.Add();
// Creamos una instancia de la primera hoja de trabajo de excel
HojaExcel = LibroExcel.Worksheets[1];
HojaExcel.Visible = Excel.XlSheetVisibility.xlSheetVisible;
// Hacemos esta hoja la visible en pantalla
// (como seleccionamos la primera esto no es necesario
// si seleccionamos una diferente a la primera si lo
// necesitariamos).
HojaExcel.Activate();
// Crear el encabezado de nuestro informe.
// La primera línea une las celdas y las convierte un en una sola.
HojaExcel.Range["A1:E1"].Merge();
// La segunda línea Asigna el nombre del encabezado.
HojaExcel.Range["A1:E1"].Value = "------------------------------------------";
// La tercera línea asigna negrita al titulo.
HojaExcel.Range["A1:E1"].Font.Bold = true;
// La cuarta línea signa un Size a titulo de 15.
HojaExcel.Range["A1:E1"].Font.Size = 15;
// Crear el subencabezado de nuestro informe
HojaExcel.Range["A2:E2"].Merge();
HojaExcel.Range["A2:E2"].Value = "ENCUESTA DE SATISFACCIÓN AL CLIENTE EXTERNO";
HojaExcel.Range["A2:E2"].Font.Italic = true;
HojaExcel.Range["A2:E2"].Font.Size = 13;
Excel.Range objCelda = HojaExcel.Range["A3", Type.Missing];
objCelda.Value = "ID";
objCelda = HojaExcel.Range["B3", Type.Missing];
objCelda.Value = "Preguntas";
objCelda = HojaExcel.Range["C3", Type.Missing];
objCelda.Value = "Opciones";
objCelda = HojaExcel.Range["D3", Type.Missing];
objCelda.Value = "Valor de la Respuesta";
objCelda = HojaExcel.Range["E3", Type.Missing];
objCelda.Value = "Numero Votos";
objCelda.EntireColumn.NumberFormat = "###,###,###.00";
int i = 4;
foreach (DataRow Row in DS.Tables[0].Rows)
{
// Asignar los valores de los registros a las celdas
HojaExcel.Cells[i, "A"] = Row.ItemArray[0];
// ID
HojaExcel.Cells[i, "B"] = Row.ItemArray[1];
// Pregunta
HojaExcel.Cells[i, "C"] = Row.ItemArray[2];
// Opciones
HojaExcel.Cells[i, "D"] = Row.ItemArray[3];
// Valor de la Respuesta
HojaExcel.Cells[i, "E"] = Row.ItemArray[4];
// Numero Votos
// Avanzamos una fila
i++;
}
// Seleccionar todo el bloque desde A1 hasta D #de filas.
Excel.Range Rango = HojaExcel.Range["A3:E" + (i - 1).ToString()];
// Selecionado todo el rango especificado
Rango.Select();
// Ajustamos el ancho de las columnas al ancho máximo del
// contenido de sus celdas
Rango.Columns.AutoFit();
// Asignar filtro por columna
Rango.AutoFilter(1);
// Crear un total general
//LibroExcel.PrintPreview();
}