protected string ObtenerConsumos(string sConcepto, String sNivel, string sListaCodigos, string sDesde, string sHasta, string sInt, string sExt)
    {
        string        sResul = "";
        StringBuilder sb     = new StringBuilder();
        StringBuilder sbPSN  = new StringBuilder();
        bool          bError = false;

        try
        {
            if (!Utilidades.isDate(sDesde))
            {
                sResul = "Error@#@La fecha desde no es correcta";
                bError = true;
            }
            if (!bError && !Utilidades.isDate(sHasta))
            {
                sResul = "Error@#@La fecha hasta no es correcta";
                bError = true;
            }

            if (!bError)
            {
                DataSet ds = Consumo.ObtenerInformeConsProfAEDS(short.Parse(sConcepto), sListaCodigos, int.Parse(Session["UsuarioActual"].ToString()),
                                                                sDesde, sHasta, sInt, sExt, sNivel);


                sb.Append("<table id='tblDatos' style='font-family:Arial;font-size:8pt;' cellpadding='0' cellSpacing='0' border='1'>");
                sb.Append("<tr>");
                sb.Append("<td style='background-color: #BCD4DF;'>Nº Proyecto</td>");
                sb.Append("<td style='background-color: #BCD4DF;'>Denominación Proyecto</td>");
                //sb.Append("<td style='background-color: #BCD4DF;'>Nº Proy. Técnico</td>");
                sb.Append("<td style='background-color: #BCD4DF;'>Denominación Proy. Técnico</td>");
                sb.Append("<td style='background-color: #BCD4DF;'>Nº Tarea</td>");
                sb.Append("<td style='background-color: #BCD4DF;'>Denominación Tarea</td>");

                sb.Append("<td style='background-color: #BCD4DF;'>OTC</td>");
                sb.Append("<td style='background-color: #BCD4DF;'>OTL</td>");

                sb.Append("<td style='background-color: #BCD4DF;'>Nº Usuario</td>");
                sb.Append("<td style='background-color: #BCD4DF;'>Profesional</td>");
                sb.Append("<td style='background-color: #BCD4DF;'>Horas</td>");
                sb.Append("<td style='background-color: #BCD4DF;'>Jornadas</td>");

                foreach (DataRow oFila in ds.Tables[1].Rows)
                {
                    sb.Append("<td style='background-color: #BCD4DF;'>" + oFila["denominacion"] + "</td>");
                }
                sb.Append("<td style='background-color: #BCD4DF;'>Observaciones</td>");
                sb.Append("</tr>");

                int i = 0;
                foreach (DataRow oFila in ds.Tables[0].Rows)
                {
                    sb.Append("<tr>");
                    sb.Append("<td>" + oFila.ItemArray[0].ToString() + "</td>");  //Nº Proyecto
                    sb.Append("<td>" + oFila.ItemArray[1].ToString() + "</td>");  //Denominación Proyecto
                    //sb.Append("<td>" + oFila.ItemArray[2].ToString() + "</td>");//Nº Proy. Técnico
                    sb.Append("<td>" + oFila.ItemArray[2].ToString() + "</td>");  //Denominación Proy. Técnico
                    sb.Append("<td>" + oFila.ItemArray[3].ToString() + "</td>");  //Nº Tarea
                    sb.Append("<td>" + oFila.ItemArray[4].ToString() + "</td>");  //Denominación Tarea

                    sb.Append("<td>" + oFila.ItemArray[11].ToString() + "</td>"); //OTC
                    sb.Append("<td>" + oFila.ItemArray[12].ToString() + "</td>"); //OTL


                    sb.Append("<td>" + oFila.ItemArray[5].ToString() + "</td>");  //Nº Usuario
                    sb.Append("<td>" + oFila.ItemArray[6].ToString() + "</td>");  //Profesional
                    sb.Append("<td>" + oFila.ItemArray[9].ToString() + "</td>");  //Horas
                    sb.Append("<td>" + oFila.ItemArray[10].ToString() + "</td>"); //Jornadas

                    i = 14;
                    while (i < oFila.ItemArray.Length)
                    {
                        sb.Append("<td>" + oFila.ItemArray[i].ToString() + "</td>");
                        i++;
                    }
                    sb.Append("<td>" + oFila.ItemArray[13].ToString() + "</td>");//Observaciones
                    sb.Append("</tr>");
                }

                sb.Append("</table>");
                ds.Dispose();

                //sResul = "OK@#@" + sb.ToString();
                string sIdCache = "EXCEL_CACHE_" + Session["IDFICEPI_ENTRADA"].ToString() + "_" + DateTime.Now.ToString();
                Session[sIdCache] = sb.ToString();;

                sResul = "OK@#@cacheado@#@" + sIdCache + "@#@" + sb.ToString();;
            }
        }
        catch (Exception ex)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al obtener los consumos.", ex);
        }

        return(sResul);
    }