Ir al contenido



Foto

De CSV a un archivo Excel o un PDF


  • Por favor identifícate para responder
13 respuestas en este tema

#1 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.980 mensajes
  • LocationArgentina

Escrito 22 junio 2017 - 02:24

Les explico,

tengo un csv que me llega mal formateado, ya que al abrirlo con Excel, no es capaz de separarlo y reconocer los campos adecuadamente (y otro par de detalles más como las fechas que vienen en formato mm/dd/yy).

Yo no tengo drama con arreglarlo a eso (después de todo la gracia del csv es que es un archivo simple sin formato más que las "comas" como "separador") y volver a guardarlo como csv ya bien hecho.

 

Y como la info de un CSV es ya de por si un poco "cruda", considero en darle un mejor aspecto... un poco de color, separar bien las columnas y alinear bien el contenido... y por ello consideré oportuno la posibilidad de lidiar con un componente que trabaje con archivos excel.

 

Aquí mi dilema, la edición Starter no viene con alguna suite para abrir archivos excel. Y en CodeTyphon no le encuentro un análogo a los que suele tener las ediciones completas de Delphi. El aspecto en contra, es que quien tiene interés en esto (el cliente cabeza hueca) no tiene NPI de lo que es Excel (y apenas sabe usar Word).

Y esto me ha llevado a pensar en hacer el trabajo de forma indirecta, vía reporte, con por ejemplo LazReport en Lazarus. Y desde el reporteador ver si se puede exportar a excel. Pero no creo que resulte del todo bien...

 

 

Esto último (lo de utilizar algún sistema de reporte) me impulsa a pensar en la posibilidad de en lugar de forzarlo a lidiar con Excel, directamente generarle un PDF con el informe de la planilla bien hecha.

 

Recuerdo que el compañero Eliseo ha comentado en este hilo sobre un sistema de reporte disponible para Starter. Puede venirme, aunque como no lo he probado todavía desconozco si es viable hacer el trabajito... considerando que en realidad los datos no vienen desde un motor de base de datos, sino que son importados desde un csv muy mal hecho.

 

¿Alguien ha trabajado con algo así, y generado un pdf desde un "conjunto de datos" que no necesariamente extrae la data de una base de datos?

La verdad es que no estoy del todo confiado hasta que punto se puede automatizar y hacer más viable la presentación de la data. ¿Alguna guía?

 

Saludos,


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.641 mensajes
  • LocationMéxico

Escrito 22 junio 2017 - 02:44

Si me proporcionas un trozo de ese csv con gusto veo que se puede hacer amigo, tengo algunas ideas al respecto.

 

Saludos


  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.980 mensajes
  • LocationArgentina

Escrito 22 junio 2017 - 03:00

Si me proporcionas un trozo de ese csv con gusto veo que se puede hacer amigo, tengo algunas ideas al respecto.

 

Saludos

 

¿Una o dos líneas de ejemplo? ¿Del mal formateado (el original), o del bueno (editado)?

¿Que ideas te vienen a la cabeza?

 

Saludos,


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.641 mensajes
  • LocationMéxico

Escrito 22 junio 2017 - 03:21

¿Una o dos líneas de ejemplo? ¿Del mal formateado (el original), o del bueno (editado)?

¿Que ideas te vienen a la cabeza?

 

Saludos,

 

Como lo vayas a procesar.

 

Las ideas que tengo es hacer de este tipo de situaciones a manera de Trucos y Consejos. :)

 

Saludos


  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.980 mensajes
  • LocationArgentina

Escrito 22 junio 2017 - 03:24

Te mando en unos minutos, por privado, una muestra del archivo con la edición que le hago yo, ya que el original resultaría un pelín confuso.

 

Saludos,


  • 1

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.641 mensajes
  • LocationMéxico

Escrito 22 junio 2017 - 03:29

Te mando en unos minutos, por privado, una muestra del archivo con la edición que le hago yo, ya que el original resultaría un pelín confuso.

 

Saludos,

 

Perfecto, ya te daré noticias :)

 

Saludos


  • 0

#7 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 794 mensajes
  • LocationArgentina

Escrito 22 junio 2017 - 06:09

Creo que practicamente todos los reporteadores Object Pascaleros fueron pensados para trabajar con DataSets, lamentablemente. Algunos mas adelante incorporaron la posibilidad de reportes virtuales (no ligados a DataSet); otros como FastReports tienen alguna que otra clase que sirve de Adaptador, basicamente te va invocando metodos estilo ListView virtual (dame el dato para tal columna, decime cuantos elementos, decime si llege al final, etc).

 

En el "peor" de los casos podes armar algun DataSet en memoria en base a tu archivo CSV. Seguramente por la red alguna clase que levante un csv como un DataSet hay, y si no la hay, codificarlo es trivial


  • 0

#8 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.980 mensajes
  • LocationArgentina

Escrito 22 junio 2017 - 07:05

Creo que practicamente todos los reporteadores Object Pascaleros fueron pensados para trabajar con DataSets, lamentablemente. Algunos mas adelante incorporaron la posibilidad de reportes virtuales (no ligados a DataSet); otros como FastReports tienen alguna que otra clase que sirve de Adaptador, basicamente te va invocando metodos estilo ListView virtual (dame el dato para tal columna, decime cuantos elementos, decime si llege al final, etc).

 

En el "peor" de los casos podes armar algun DataSet en memoria en base a tu archivo CSV. Seguramente por la red alguna clase que levante un csv como un DataSet hay, y si no la hay, codificarlo es trivial

 

Es una posibilidad que no descarto.

Mañana seguiré con el tema. Por hoy ya tuve bastante...  el día de hoy estuve en modo bombero apagando incendios en varios lados. Espero que mi cabeza piense en frio esta noche.

 

Saludos,


  • 1

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.641 mensajes
  • LocationMéxico

Escrito 23 junio 2017 - 08:33

Es una posibilidad que no descarto.
Mañana seguiré con el tema. Por hoy ya tuve bastante...  el día de hoy estuve en modo bombero apagando incendios en varios lados. Espero que mi cabeza piense en frio esta noche.
 
Saludos,

 
Buen día amigo Marchelo
 
Ya tenemos la primera parte del proyecto :)
 
Leer el archivo CSV y almacenarlo en un ClietDataSet

delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3. nombre,
  4. cadena: string;
  5. archivo: TextFile;
  6. Splitted: TArray<String>;
  7. begin
  8. nombre := ExtractFilePath(Application.ExeName) + 'docs\muestra.csv';
  9. AssignFile(archivo, nombre);
  10. Reset(archivo);
  11. ClientDataSet1.CreateDataSet;
  12. while not eof(archivo) do
  13. begin
  14. readln(archivo,cadena);
  15. if cadena <> '' then
  16. begin
  17. ClientDataSet1.Append;
  18. Splitted := cadena.Split([';']);
  19. ClientDataSet1Fecha.AsString := Splitted[0];
  20. ClientDataSet1Descripcion.AsString := Splitted[1];
  21. ClientDataSet1Cantidad_1.AsString := Splitted[2];
  22. ClientDataSet1Cantidad_2.AsString := Splitted[3];
  23. ClientDataSet1Cantidad_3.AsString := Splitted[4];
  24. end;
  25. ClientDataSet1.First;
  26. end;
  27. end;

 
Ahora solo falta crear un pequeño reporte para exportarlo a PDF :)
 
Saludos
  • 1

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.980 mensajes
  • LocationArgentina

Escrito 23 junio 2017 - 09:08

Muchas gracias amigo por la guía.

Ahora que he podido instalar el reporteador, dandome una idea de tu demo creo que puedo ir siguiendo. Cualquier cosa pego el grito. :D

Primero termino un trabajo urgente que me acaban de dar y por la noche me pongo con esto.

 

Saludos,


  • 2

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.641 mensajes
  • LocationMéxico

Escrito 23 junio 2017 - 10:21

Muchas gracias amigo por la guía.
Ahora que he podido instalar el reporteador, dandome una idea de tu demo creo que puedo ir siguiendo. Cualquier cosa pego el grito. :D
Primero termino un trabajo urgente que me acaban de dar y por la noche me pongo con esto.
 
Saludos,


Cual fue la solución amigo, así podría poner una nota en el tutorial :)

Saludos
  • 0

#12 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.980 mensajes
  • LocationArgentina

Escrito 23 junio 2017 - 10:26

Lo puse en mi ultimo post en el hilo.
Ejecute como administrador Delphi 10.2 y anduvo.

Saludos,
  • 1

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.641 mensajes
  • LocationMéxico

Escrito 23 junio 2017 - 10:35

Lo puse en mi ultimo post en el hilo.
Ejecute como administrador Delphi 10.2 y anduvo.

Saludos,


Ah ok, no había visto el otro hilo. es que yo nunca uso mi máquina con usuario restringido y siempre me aseguro que el control de usuarios no me limite, tal vez por eso nunca reparo en ese asunto. :)

 

Gracias amigo (y)

 

Saludos


  • 0

#14 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.980 mensajes
  • LocationArgentina

Escrito 23 junio 2017 - 10:44

En mi equipo, yo soy Administrador. No uso otro perfil restringido. De ahí mi rareza.

Pero bueno, agradezco que la solución sea esa cosa simple y no algo más rebuscado.

 

Saludos,


  • 1