• Publicidad

Generación de Excel sin usar Spreadsheet::WriteExcel

¿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.

Generación de Excel sin usar Spreadsheet::WriteExcel

Notapor mgonzalez » 2010-10-18 14:41 @653

Hola.

Actualmente estoy generando un archivo Excel con Spreadsheet::WriteExcel. Dicho Excel cuenta con varios libros. Este método no es del todo eficiente ya que se está quedando colgado al generarlo.

¿Alguien por ahí sabe cómo generarlo usando otro método?

Muchas Gracias.
mgonzalez
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2010-10-13 08:54 @412

Publicidad

Re: Generación de Excel sin usar Spreadsheet::WriteExcel

Notapor explorer » 2010-10-18 15:34 @690

¿Qué sistema operativo usas? ¿De qué tamaño es el libro? ¿Has probado otros módulos? ¿Has probado a hacerlo usando OLE?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generación de Excel sin usar Spreadsheet::WriteExcel

Notapor mgonzalez » 2010-10-18 16:01 @709

SO. Windows server 2000
BBDD SqlServer7

No he probado con otro, solo he visto un ejemplo donde se crea un XML, es decir un archivo plano, que no me sirve ya que lo que necesito es crear un Excel con libros. Los registros son pocos, algo así como 200 por libro. Y la cantidad de libros es de 12.

En un comienzo pensé que al cambiar prepare() y execute() iba a ganar en tiempo pero no fue así.

Aquí hay una documentación del objeto que uso:
http://search.cpan.org/dist/Spreadsheet ... bigfile.pl

Adicionalmente, he tratado de conectar la BBDD por otro método que no sea ODBC. Sin embargo, por lo que leí, hay que cambiar todas las formas de hacer las consultas.

Gracias.
mgonzalez
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2010-10-13 08:54 @412

Re: Generación de Excel sin usar Spreadsheet::WriteExcel

Notapor explorer » 2010-10-18 17:22 @765

Acabo de ver un nuevo módulo que genera Excel en formato 2007, que se ha actualizado el pasado día 12: Excel::Writer::XLSX.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generación de Excel sin usar Spreadsheet::WriteExcel

Notapor mgonzalez » 2010-10-19 07:54 @371

Encontré un código que hace varias páginas o libros en un Excel. Funciona sin problemas. Tal como comentaste, me encantaría estar trabajando en Linux y con otra BD.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. ###############################################################################
  4. #
  5. # Example of creating a Spreadsheet::WriteExcel that is larger than the
  6. # default 7MB limit.
  7. #
  8. # This is exactly that same as any other Spreadsheet::WriteExcel program except
  9. # that is requires that the OLE::Storage module is installed.
  10. #
  11. # reverse('©'), Jan 2007, John McNamara, [email protected]
  12.  
  13.  
  14. use strict;
  15. use Spreadsheet::WriteExcel;
  16.  
  17.  
  18. my $workbook  = Spreadsheet::WriteExcel->new('c:\\www\\sbmp\\informes\\bigfile.xls');
  19. my $worksheet = $workbook->add_worksheet('primero');
  20. my $worksheet2 = $workbook->add_worksheet('segundo');
  21. my $worksheet3 = $workbook->add_worksheet('tercero');
  22.  
  23.  
  24.  
  25.  
  26. $worksheet->set_column(0, 50, 18);
  27.  
  28. for my $col (0 .. 50) {
  29.     for my $row (0 .. 2000) {
  30.         $worksheet->write($row, $col, "Row: $row Col: $col");
  31.     }
  32. };
  33.  
  34. $worksheet2->set_column(0, 50, 18);
  35.  
  36. for my $col (0 .. 50) {
  37.     for my $row (0 .. 2000) {
  38.         $worksheet2->write($row, $col, "Row: $row Col: $col");
  39.     }
  40. };
  41. for my $col (0 .. 50) {
  42.     for my $row (0 .. 2000) {
  43.         $worksheet3->write($row, $col, "Row: $row Col: $col");
  44.     }
  45. };
  46.  
  47.  
  48.  
  49. __END__
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


¡¡Muchas Gracias por tu valiosa ayuda!!

:)
mgonzalez
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2010-10-13 08:54 @412


Volver a Intermedio

¿Quién está conectado?

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