• Publicidad

Problemas al leer un archivo xlsx

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Re: Problemas al leer un archivo xlsx

Notapor explorer » 2012-07-18 05:52 @286

Prueba este programa, dumpxlsx:

Sintáxis: (dumpxlsx) [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. # Paul
  3. #use strict;
  4.  
  5. use Text::Iconv;
  6. my $convertor = Text::Iconv -> new("utf-8", "windows-1251");
  7.  
  8. use lib "Spreadsheet-XLSX-0.13/lib/";
  9. #use lib "Spreadsheet-XLSX-0.13_updated/lib/";
  10. use Spreadsheet::XLSX;
  11.  
  12.  
  13. sub dump_sheet($) {
  14.    my $Path = $_[0];
  15.    print "Dumping workbook '$Path'\n";
  16.    my $oBook = Spreadsheet::XLSX -> new($Path, $convertor);
  17.    foreach my $sheet (@{$oBook -> {Worksheet}}) {
  18.       printf("  Dumping sheet %s\n", $sheet->{Name});
  19.       $sheet -> {MaxRow} ||= $sheet -> {MinRow};
  20.       foreach my $row ($sheet -> {MinRow} .. $sheet -> {MaxRow}) {
  21.          $sheet -> {MaxCol} ||= $sheet -> {MinCol};
  22.          foreach my $col ($sheet -> {MinCol} .. $sheet -> {MaxCol}) {
  23.             my $cell = $sheet -> {Cells} [$row] [$col];
  24.             if ($cell) {
  25.                printf("    (%s,%s) => %s\n", $row, $col, $cell -> {Val});
  26.                }
  27.             }
  28.          }
  29.       print "  End of sheet\n";
  30.       }
  31.    print "End of workbook '$Path'\n";
  32.    }
  33.  
  34.  
  35. my @PathList;
  36. # Use names on command line, or built-in test cases
  37. if ($#ARGV != -1) {
  38.    @PathList = @ARGV;
  39.    }
  40. else {
  41.    @PathList = (
  42.       "test.xlsx",
  43.       "Settlement_20120531.xlsx",
  44.       "207Settlement-2012-06-12.xlsx",
  45.       );
  46.    }
  47. foreach my $Path (@PathList) {
  48.    dump_sheet($Path);
  49.    }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Lo llamas así: dumpxlsx archivo.xlsx

Si no te funciona, al final de la página donde encontré este programa hay una versión parcheada del módulo XLSX.pm de hace un mes.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Problemas al leer un archivo xlsx

Notapor MARKO » 2012-07-18 11:56 @539

Saludos, hugo11ab.

Quiero hacerte una pregunta: ¿estás trabajando en Windows? Si es así te recomiendo echarle un vistazo a Win32::OLE.

Para el caso que presentas sería algo así para jalar las fórmulas de la celdas.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Win32::OLE;
  2. use Win32::OLE qw(in with);
  3. use Win32::OLE::Const 'Microsoft Excel';
  4.  
  5. my $excel = Win32::OLE->new('Excel.Application');
  6. $excel -> {Visible} = 1;
  7. $excel    -> {DisplayAlerts} = 1;
  8. my $libro = $excel->Workbooks->Open($archivo); # abrir fichero Excel
  9. my $hoja = $libro->Worksheets("Hoja1");
  10. $hoja->Activate;
  11. my $formula = $hoja->Range("AA8")->{Formula};   #ya tienes la formula que estaba en la celda AA8
  12.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


aquí publiqué instrucciones relevantes para Win32::OLE con Excel.

Saludos
MARKO
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2012-01-10 22:34 @982

Re: Problemas al leer un archivo xlsx

Notapor hugo11ab » 2012-07-18 12:16 @553

Gracias, explorer, gracias a la observación que me hiciste:

"Entonces... si tu eres el que genera la hoja inicial, no necesitas de ningún módulo para sacar las fórmulas. Ya tienes la información original, así que puedes grabarla en texto directamente."

Lo que hice fue que como yo genero el archivo xlsx, entonces abro otra hoja en el mismo archivo y desde ahí voy formando los registros para conformar el archivo plano. Una vez que ya tengo toda la información requerida, copio la columna del archivo de Excel y la pego en un archivo txt y de esta manera obtengo mi archivo plano.

Creo que no es la manera correcta de hacerlo, pero al final he obtenido el resultado deseado.

De todas formas le echaré un vistazo al programa que me recomendaste. Agradezco mucho tu ayuda.
hugo11ab
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2006-07-22 23:24 @016

Re: Problemas al leer un archivo xlsx

Notapor hugo11ab » 2012-07-18 12:18 @554

Gracias, Marko; estoy trabajando en Linux.
hugo11ab
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2006-07-22 23:24 @016

Anterior

Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados