none
formulario html y excel RRS feed

  • Pregunta

  • CREO QUE LA PREGUNTA QUE VOY HACER ES DE LAS ANTIGUAS PERO DESPUES DE TIEMPO QUE  TENGO TIEMPO PARA PROGRAMAR UN POCO, DESCARGUE VISUAL STUDIO CODE Y HE CREADO UN FORMULARIO DONDE PIDO NOMBRE, AÑO DE NACIMIENTO Y SEXO, LO QUE QUIERO ES QUE ESTA INFORMACION QUE SE INGRESA EN EL FORMULARIO SE DIRIJA A MI EXCEL Y LO GUARDE, EL FORMULARIO YA ESTA SOLO QUISIERA LA CONEXION CON EXCEL Y EL ALMACENAMIENTO. GRACIAS.
    miércoles, 26 de febrero de 2020 1:44

Todas las respuestas

  • Hay distintas formas de grabar datos en Excel desde un programa en .Net (no has dicho qué lenguaje, solo pusiste la pregunta en el foro de Visual Studio).

    1) Añadir una Referencia al Excel y usar COM/Interop para enviarle comandos al propio Excel. Esto requiere que haya un Excel instalado en la misma máquina. No es recomendable si se trata de una aplicación de tipo Web (lo digo porque lo titulaste "formulario html"). Eso requeriría instalar Excel en el servidor, y trucar los permisos DCOM para que funcione desde la aplicación Web. Es una configuración desaconsejada y además tiene el inconveniente de que genera el fichero localmente en el servidor y de que no funciona bien si dos usuarios entran a la vez.

    2) Generar directamente un fichero que se pueda abrir con Excel. La forma más sencilla es generar un CSV, que se construye simplemente concatenando cadenas de texto, y Excel lo abre sin problemas. Pero no permite aplicar formato a las celdas, solo exporta el texto "en bruto". Otra alternativa es generar un .xsl o un .xslx usando librerías de terceros (por ejemplo, ClosedXml) o las propias librerías de Microsoft (OpenXml, descarga gratuita). Esto es potentísimo y puedes hacer "de todo" con el fichero Excel, pero la curva de aprendizaje es empinada.

    3) Usar el driver de OleDb para abrir el fichero Excel como una tabla de base de datos, e insertar los registros como si fueran filas de la tabla. Esto es muy rápido, pero requiere que instales previamente los drivers oportunos (en 32 o 64 bits dependiendo de tu servidor) sobre el servidor que ejecuta la aplicación web.

    Aquí tienes el manual que explica como hacer el caso 2 usando OpenXml:

    https://docs.microsoft.com/en-us/office/open-xml/how-to-insert-text-into-a-cell-in-a-spreadsheet

    miércoles, 26 de febrero de 2020 7:31
  • MUCHAS GRACIAS POR LA INFORMACION, ES NECESARIO TENER INSTALADO VS.NET, POR QUE SOLO ESTOY EN PRACTICE CON VSCODE Y COMO LO MANIFIESTAS MEJOR USO ALGO PREPEPARADO PARA ESTOS CASOS COMO LA RECOMENDACION DEL PUNTO DOS, DESDE YA MUCHAS GRACIAS. MIRA ESTE EL CODIGO DEL FORMULARIO ALGO SENCILLISIMO.

    <form action="ejemplo.php" method="get">
      <p>Nombre: <input type="text" name="nombre" size="40"></p>
      <p>Año de nacimiento: <input type="number" name="nacido" min="1900"></p>
      <p>Sexo:
        <input type="radio" name="hm" value="h"> Hombre
        <input type="radio" name="hm" value="m"> Mujer
      </p>
      <p>
        <input type="submit" value="Enviar">
        <input type="reset" value="Borrar">
      </p>

    miércoles, 26 de febrero de 2020 19:09
  • Ah, no. Por lo que veo en el Action del Form se trata de un programa en PHP. No es código de .NET, que es a lo que se referían las opciones que te di en la respuesta anterior. Al poner la pregunta en el foro de Visual Studio presumí que se trataba de un programa hecho en alguna de las variantes de .NET, que son las que normalmente se programan con Visual Studio. Pero tratándose de PHP, es mejor que peguntes en algún foro especializado en dicho lenguaje.
    miércoles, 26 de febrero de 2020 20:07
  • COMO TE COMENTE ESTOY PRACTICE DESPUES DE TIEMPO CON VISUAL STUDIO Y COMENCE CON VISUAL STUDIO CODE Y LO QUE ME SORPRENDIO ES LA CANTIDAD DE EXTENSIONES CON LA QUE PUEDE UNO PRACTICAR Y PROGRAMAR EN ESTE FORMIDABLE EDITOR DE CODIGO Y LAS EXTENSIONES PHP SON VARIAS PERO PARA NO MOLESTAR COMO VUELVO ESTE PHP A .NET SIN MUCHA DIFICULTAD. GRACIAS POR LA INFORMACION BRINDADA.
    jueves, 27 de febrero de 2020 2:56
  • COMO VUELVO ESTE PHP A .NET SIN MUCHA DIFICULTAD

    Bueno, lo de "sin mucha dificultad" es relativo. El HTML propiamente dicho no tiene problema, lo podrías reutilizar en una aplicación .NET sin cambiar prácticamente nada. Únicamente el "action" tendría que apuntar al código que hayas escrito en .net en lugar del "ejemplo.php". Por ejemplo, si desde Visual Studio usas la opción de "nuevo proyecto" y creas un proyecto de tipo ASP.NET MVC (ya te comenté que permite muchos tipos distintos), entonces podrías añadir el .html tal como lo tienes a ese proyecto y simplemente cambiar action="ejemplo.php" por action="Home/Ejemplo" y el resto funcionaría (aunque en realidad en una típica aplicación de este tipo harías las cosas de forma un poco distinta, usando páginas dinámicas con .cshtml, pero el .html también funciona).

    Pero aquí se acaba la parte de "sin mucha dificultad". A continuación lo que hay que hacer es cambiar todo el código PHP que tenías dentro de "ejemplo.php" y sustituirlo por código escrito en uno de los lenguajes de .NET, como por ejemplo C#, escrito dentro del HomeController.cs. Esto es completamente distinto, no se parece nada el uno al otro, con lo que tendrías que reescribirlo por completo en el otro lenguaje. A no ser que conozcas bien ambos lenguajes, esta conversión sí que tendrá "mucha dificultad". Básicamente es partir de cero y hacerlo todo nuevo usando otro lenguaje que probablemente no conoces.

    jueves, 27 de febrero de 2020 7:19
  • gracias mi hermano por la ayuda siempre clarificadoras,  instalo de todas maneras el VISUAL ESTUDIO o puedo seguir entrando en calor con el proyecto de pagina web "casera" como se diría con visual studio code, que me recomiendas. gracias.
    jueves, 27 de febrero de 2020 15:17
  • Sí, sí, puedes seguir con el Code. Es perfectamente válido para desarrollar una aplicación web sencilla. El Visual Studio "grande" es mucho más pesado y más potente, pero si no vas a hacer uso de sus características adicionales no hay razón para que no sigas con Code.
    jueves, 27 de febrero de 2020 19:41