none
= Ingresar la fecha de descarga a un archivo xlsx y csv RRS feed

  • Pregunta

  • Buen día

    Estoy con el siguiente dilema. Agradecería mucho me compartieran su punto de vista o cualquier comentario que pudiera ayudarme.

    Primeramente, en Java con la siguiente API  https://poi.apache.org/apidocs/org/apache/poi/xssf/streaming/SXSSFWorkbook.html genero archivos en excel. Cuando los archivos son generados, se almacena el nombre del archivo, ruta del archivo, entre otros datos, la respectiva información en una tabla de base de datos.

    Por otro lado, en C#, consulto los archivos que fueron generados tanto en excel y csv. Los listo en una tabla con su respectivo icono de descarga para cada tipo de archivo. Lo que el cliente me solicita, es que ingrese dentro del archivo xlsx y csv la hora de descarga de cada archivo. ¿De qué manera podría ingresar la fecha y hora de descarga de cada archivo? ¿Una vez que fueron descargados los archivos, leer el archivo e identificar la celda en la que ingresaría la fecha y hora de descarga y después escribirla? 

    Agradecería mucho cualquier comentario o sugerencia que pudiera ayudarme a disipar esta cuestión.

    Muchas gracias.


    jueves, 14 de junio de 2018 15:48

Todas las respuestas

  • Para el archivo CSV es bastante fácil pues es un archivo de texto.  Simplemente ábralo para escritura con File.AppendText(), que permite la inclusión de texto al final del archivo.

    using (TextWriter tw = File.AppendText("<ruta del archivo>"))
    {
        //Línea en blanco.
        tw.WriteLine();
        tw.WriteLine($"Descargado: {DateTiem.Now}");
    }

    Para MS Excel, abra el archivo con una biblioteca de clases que sea capaz, como ClosedXML, ubique una hoja y una celda vacía apropiada y escriba el valor.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 14 de junio de 2018 16:36
    Moderador
  • Agredezco sus sugerencias y aportaciones, me daré a la tarea de investigar sobre lo comentado.

    Unas preguntas más ¿Es posible ubicar en el csv ciertas etiquetas las cuales establecerán donde debe de estar escrito la fecha y hora de descarga?

    ¿Será necesario crear una "copia" del archivo para ingresar la fecha y hora de descarga y mantener otra copia del archivo en el servidor?
    jueves, 14 de junio de 2018 17:16
  • Si el archivo en el servidor tiene como propósito servir de machote, sí, debe primero hacer una copia del archivo o de lo contrario habrá alterado el machote.

    Sí, es posible ubicar etiquetas, pero recuerde que no suele ser buena idea intentar tratar un archivo de texto como si fuera algo más porque en un archivo de texto realmente no hay forma de "insertar" datos.  Simplemente hay que reescribirlo siempre, de pies a cabeza.  Para insertar datos en un archivo de texto, hay que leer todo el texto, hacer las inserciones, luego escribir todo el texto a disco.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 14 de junio de 2018 17:42
    Moderador
  • En ese caso, ¿Es posible copiar información del archivo que estará en el servidor al archivo que será descargado por el usuario?
    jueves, 14 de junio de 2018 19:14
  • hola

    >>¿De qué manera podría ingresar la fecha y hora de descarga de cada archivo?

    vas a tener que editarlo previo a la descarga, en c# no mencionas como estas desarrollando, imagino utilizas asp.net, si es asi deberias definir un link de descarga a una pagina aspx la cual en el response envie el file que se quiere descargar, pero previamente lo edite y agregue la fecha

    [ASP.NET] Grabar Archivo en base de datos

    analiza el titulo "Dos formas diferentes de exponer el link de descarga" n donde se usa un download.aspx, es alli donde editarias

    >>¿Una vez que fueron descargados los archivos, leer el archivo e identificar la celda en la que ingresaría la fecha y hora de descarga y después escribirla? 

    pero esto lo haria el cliente, en que esta desarrollado? vas a necesitar una libreria

    >>¿Es posible copiar información del archivo que estará en el servidor al archivo que será descargado por el usuario?

    magicamente esta claro que no, vas a necesitar exponer un servicio que lea el archivo del servidor y envie los datos

    el cliente tomaria esto, abriria en edicion el file local y volcaria la informacion

    nuevamente para esto necesitas una libreria, si puede ser ClosedXml seria genial ya que se basa en open xml, asi no necesitas de office

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 14 de junio de 2018 20:24
  • Con lo comentado anteriormente, el proceso que debería realizar es:

    1. Crear un nuevo archivo (sea xlsx o csv). Dependiendo de lo que el usuario desee descargar.
    2. Abrir el nuevo archivo.
    3. Re-escribir el archivo, en este caso un encabezado. 
    4. Ingresar la fecha/hora de descarga del propio archivo.
    5. Continuar con la escritura del archivo.
    6. Cerrar el archivo
    7. Proceder a la descarga

    ¿Sería correcto el proceso planteado? Cualquier sugerencia o comentario, me sería de gran ayuda.

    viernes, 15 de junio de 2018 17:22