Foros del Web » Programando para Internet » Javascript »

Exportar a excel

Estas en el tema de Exportar a excel en el foro de Javascript en Foros del Web. Hola mi estimados amigos de foros del web. se me ha presentado el siguiente problema y estoy buscando solución que me ha esquibado por varios ...
  #1 (permalink)  
Antiguo 28/01/2010, 10:41
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 3 meses
Puntos: 1
Exclamación Exportar a excel

Hola mi estimados amigos de foros del web.

se me ha presentado el siguiente problema y estoy buscando solución que me ha esquibado por varios días.

el problema es el siguiente:

tengo un textos que promedian 176529 caracteres (lo revise haciendo textoquequieroexportar.lenght). el problema es que al traspasar textos demasiado grandes a otra página mediante form o ajax llega vacio. Al parecer no soporta tanto una variable por parametro.

la idea:

La finalidad de exportar tanto texto es generar informes y exportarlos a excel, word o a pdf.

como:

en seudocodigo seria : selecciono una región de la página que esta entre <div id=texto> esto quiero exportar </div> y la capturo con document.getElementId('texto') , lo envio a una función para quitar objetos de formulario, img, scritps, etc, luego lo envio por ajax a una página en asp, exportaraexcel.asp, que recibe por parametro el texto y la encabezo con la funcion asp :
Response.ContentType= "application/vnd.ms-excel" Response.AddHeader "Content-Disposition", "inline; filename=elarchivo.xls;"

y se generar el excel que puedo descargar en mi pc.

lindo cierto, y lo bueno es que funciona pero con texto chicos.

Estimados, dejo mi inquietud para que me ayuden a generar una solución para manejar textos grandes o arreglar el código por que me falta algo, que sus experiencias viviadas ya han logrado solucionar.

dejo el código para que lo revisen y se pueda generar una lluvia de ideas.

codigo:


pagina con el texto

___________________
Código HTML:
Ver original
  1. <script language="JavaScript">
  2.  
  3. function printSpecial(){
  4.  
  5.     var html;
  6.  
  7.     if (document.getElementById != null){
  8.  
  9.         if (document.getElementsByTagName != null){
  10.             var headTags = document.getElementsByTagName("BODY");
  11.  
  12.             if (headTags.length > 0)
  13.                 html += headTags[0].innerHTML;
  14.         }
  15.  
  16.         var printReadyElem = document.getElementById("printReady");
  17.  
  18.  
  19.         if (printReadyElem != null){
  20.             html = printReadyElem.innerHTML;
  21.         }
  22.         else{
  23.             alert("NO SE ENCONTRO LA FUNCION");
  24.             return;
  25.         }
  26.  
  27.         html = limpiapalabras(html);
  28.  
  29. //      exportarExcel(html,1)
  30.  
  31. //      document.write (html);
  32.  
  33.  
  34.     }
  35.     else{
  36.         alert("Esta funcion no es soportada por su navegador");
  37.     }
  38. }
  39.  
  40.  
  41. function limpiapalabras(doc){
  42.  
  43. //--------QUITAR LAS IMAGENES
  44.     doc = doc.replace(/<IMG[^>]+>/g,'&nbsp;');
  45.  
  46. //--------QUITAR ELEMENTOS INPUT
  47.     doc = doc.replace(/<FORM[^>]+>/g,'&nbsp;');
  48.     doc = doc.replace(/<\/FORM>/g,'&nbsp;');   
  49.     doc = doc.replace(/<INPUT[^>]+>/g,'&nbsp;');
  50.     doc = doc.replace(/<TEXTAREA[^>]+>/g,'&nbsp;');
  51.     doc = doc.replace(/<\/TEXTAREA>/g,'&nbsp;');   
  52.  
  53. //--------QUITAR LINK
  54.     doc = doc.replace(/<A[^>]+>/g,'');
  55.     doc = doc.replace(/<\/A>/g,'');
  56.  
  57. //--------QUITAR SCRIPT
  58.     doc = doc.replace(/<script[^>]+\/script>/g,'');
  59.  
  60.     //Delete all SPAN tags
  61. //  doc = doc.replace(/<\/?SPAN[^>]*>/gi, '');
  62.    
  63.     //Delete Class attributes
  64.     doc = doc.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, '<$1$3');
  65.    
  66.     //Delete Style attributes
  67. //  doc = doc.replace(/<(\w[^>]*) style='([^']*)'([^>]*)/gi, '<$1$3');
  68.     //Delete Lang attributes
  69.     doc = doc.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, '<$1$3');
  70.    
  71.     //Delete XML elements and declarations
  72.     doc = doc.replace(/<\\?\?xml[^>]*>/gi, '');
  73.    
  74.     //Delete Tags with XML namespace declarations: <o:p></o:p>
  75.     doc = doc.replace(/<\/?\w+:[^>]*>/gi, '');
  76.    
  77. //  doc = doc.replace(/<FONT [^>]*><\/FONT>/gi,' ');
  78.  
  79.  
  80.     return doc;
  81.  
  82. }
  83.  
  84. </head>
  85.  
  86. <div id="printReady">
  87.  
  88. <form id="printMe" name="printMe">
  89.  
  90. <input type="button" name="printMe" onClick="printSpecial()" value="Print this Page">
  91.  
  92. </form>
  93. <&#37;
  94.     for i = 0 to 200'---> genera mucho texto a exportar
  95. %>
  96. <TABLE id=idTable cols=3 name=idTable>
  97. <TR>
  98. <TH>Titulo 1</TH>
  99. <TH>Titulo 2</TH>
  100. <TH>Titulo 3</TH>
  101. </TR>
  102. <TR><TD>Celda 1</TD><TD>Celda 5</TD><TD>Celda 5</TD></TR>
  103. <TR><TD><b>Celda 2</b></TD><TD>Celda 6</TD><TD>Celda 5</TD></TR>
  104. <TR><TD>Celda 3</TD><TD>Celda 7</TD><TD>Celda 5</TD></TR>
  105. <TR><TD>Celda 4</TD></TR>
  106. <%
  107.     next
  108. %>
  109.  
  110. </div>


EXCEL.JS
_________
Código Javascript:
Ver original
  1. var Conexion=false; // Variable que manipula la conexion.
  2. var url="generar_archivo.asp"; // Determina la pagina donde enviar
  3.  
  4. var url_ruta = ""
  5.  
  6. function objetoAjax(){
  7. var xmlhttp=false;
  8.     try {
  9.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  10.     } catch (e) {
  11.                 try {
  12.                     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  13.                 } catch (E) {
  14.         xmlhttp = false;
  15.         }
  16.     }
  17.  
  18.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  19.         xmlhttp = new XMLHttpRequest();
  20.     }
  21. return xmlhttp;
  22. }
  23.  
  24.  
  25.  
  26. function exportarExcel(texto_html,id){
  27.  
  28. peticion = objetoAjax();
  29.  
  30. peticion.open("GET", url, true);
  31.  
  32. peticion.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
  33.  
  34. peticion.onreadystatechange = function () {
  35.     if (peticion.readyState == 1) {
  36.              document.getElementById(id).innerHTML="cargando...<img src='cargando.gif' alt='enviando' />"
  37.         }
  38.         if (peticion.readyState == 4) {
  39.             var urlMod = url +'?html='+ texto_html;
  40.                 urlMod = urlMod +'&tipo='+ id;
  41. //          alert(urlMod);
  42.             window.open(urlMod);
  43. //          window.open(urlMod,"ventana1","height=300,scrollbars=0,Location=1")
  44.  
  45.  
  46.         }
  47.     }
  48. peticion.send(texto_html);
  49. }


generar_archivo.asp
____________________


Código ASP:
Ver original
  1. <%
  2. tabla  = request("html")
  3. opcion = request("tipo")
  4.  
  5.  
  6.  
  7.         Response.buffer         = true
  8.         Response.ContentType    = "application/vnd.ms-excel"
  9.         Response.AddHeader        "Content-Disposition", "inline; filename=respaldo.xls;"
  10.  
  11. '   sub exportarexcel()
  12. '   end sub
  13.    
  14.     sub exportarword()
  15.         Response.buffer         = true
  16.         Response.ContentType    = "application/vnd.ms-word"
  17.         Response.AddHeader        "Content-Disposition", "inline; filename=respaldo.doc;"
  18.     end sub
  19. %>
  20.  
  21. <html>
  22. <head>
  23. <title>EXPORTAR</title>
  24.  
  25. </head>
  26.  
  27. <body>
  28.  
  29. <%
  30.     response.Write(tabla)
  31. '   response.Binarywrite(tabla)
  32.  
  33. %>
  34. </body>
  35. </html>


PD. SI, estos códigos son familiares, pero llama recursividad.
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post

Última edición por a n g e l u s; 01/02/2010 a las 10:10 Razón: AGREGO HIGHLIGHT
  #2 (permalink)  
Antiguo 28/01/2010, 13:00
Avatar de alor86  
Fecha de Ingreso: abril-2009
Mensajes: 110
Antigüedad: 15 años
Puntos: 5
Respuesta: Exportar a excel

Usa post en lugar de get como metodo de envio
  #3 (permalink)  
Antiguo 01/02/2010, 10:08
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Exportar a excel

Gracias alor86, pero no me produjo ningun cambio
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post
  #4 (permalink)  
Antiguo 04/11/2010, 10:48
 
Fecha de Ingreso: noviembre-2010
Mensajes: 1
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Exportar a excel

Estimado, Lograste realizar esta actividad?, me podrías mostrar un ejemplo?

Te cuento, Estoy creando tablas dinamicamente al igual que tu con un for pero existen unos checkbox los cuales el usuario selecciona para que estos se escondan, pero al ser exportados los muestra igual.

Podrías ayudarme?


Gabriel.

Etiquetas: excel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:40.