Foros del Web » Programando para Internet » PHP »

Spreadsheet_Excel_Writer + addWorksheet

Estas en el tema de Spreadsheet_Excel_Writer + addWorksheet en el foro de PHP en Foros del Web. Hola, tengo un pequeño problema con esta librería, y a la hora de trabajar con varias hojas de un mismo libro este seria el codigo: ...
  #1 (permalink)  
Antiguo 18/11/2009, 08:56
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 2 meses
Puntos: 10
Spreadsheet_Excel_Writer + addWorksheet

Hola,

tengo un pequeño problema con esta librería, y a la hora de trabajar con varias hojas de un mismo libro

este seria el codigo:

Código PHP:
Ver original
  1. <?
  2.  
  3. require ("../class/excel/Writer.php");
  4.  
  5. // Percentatge d'increment
  6. $perce = $_POST['perce'];
  7. if($perce ==''){
  8.     $perce = 1;
  9. }
  10. // - Dates Desde i Fins
  11. $datadesde  = $_POST['datadesde'];
  12. $datafins   = $_POST['datafins'];
  13.  
  14. //funcio perque em retorni la mateixa data pero amb un any menys
  15. function resta_any($datacanvi){
  16.    
  17.     $datapart = explode("/",$datacanvi);
  18.    
  19.     $dia = $datapart['0'];
  20.     $mes = $datapart['1'];
  21.     $any = $datapart['2'];
  22.  
  23.     $anypassat = $any - 1;
  24.    
  25.     $data_nova = $anypassat.$mes.$dia;
  26.    
  27.     return $data_nova;
  28.  
  29. }
  30.  
  31. $datadesdep = resta_any($datadesde);
  32. $datafinsp  = resta_any($datafins);
  33.  
  34. // -- WHERE de les dates de la SQL
  35. $wheredates = "";
  36. $wheredates = " WHERE data >= ".$datadesdep." AND data <= ".$datafinsp." ";
  37.  
  38. // -- WHERE de les tendes (una o varies)
  39. $wheretenda = "";
  40. if($_POST['id_tenda'] != 0){
  41.  
  42.     $wheretenda = " AND id_tenda =".$_POST['id_tenda'].""; 
  43.    
  44. }
  45.  
  46. // -- SQL per saber el q s'ha venut l'any passat resumit per article
  47. $str_vart = "SELECT id_tenda, id_article, data, sum(partides) as partides, sum(pes) as pes, sum(total) as total
  48.              FROM lin_tickets ".$wheredates." ".$wheretenda."
  49.              GROUP BY id_tenda,data,id_article ORDER BY id_tenda, data, id_article ASC";
  50. $sql_vart = mysql_query($str_vart) or die("Error SQL Venda per Article: ".$str_vart."<br>".mysql_error());
  51. $nrg_vart = mysql_num_rows($sql_vart);
  52.  
  53.  
  54.  
  55.  
  56.  
  57. $filename = 'Previsio_Opan.xls';
  58.  
  59. $workbook = new Spreadsheet_Excel_Writer();
  60. $workbook->send($filename);
  61.  
  62. // Look at documentation
  63. $workbook->setVersion(8);
  64. // Temporary files directory
  65. $workbook->setTempDir('/tmp');
  66.  
  67.  
  68. $datamem    = "";
  69. $tendamem   = "";
  70. // Definira la fila
  71. $fila = 0;
  72.  
  73. while($rs_vart = mysql_fetch_array($sql_vart)){
  74.    
  75.    
  76.    
  77.     if($tendamem != $rs_vart['id_tenda']){
  78.        
  79.         $str_nomtenda = "SELECT tendes FROM tendes WHERE id_tenda = ".$rs_vart['id_tenda'];
  80.         $sql_nomtenda = mysql_query($str_nomtenda) or die("Error SQL Nom Tenda: ".$str_nomtenda."<br>".mysql_error());
  81.         $rs_nomtenda  = mysql_fetch_array($sql_nomtenda);
  82.         $nom_tenda    = $rs_nomtenda['tendes'];    
  83.         $tendamem     = $rs_vart['id_tenda'];
  84.         $datamem  = "";
  85.        
  86.         $worksheet =& $workbook->addWorksheet($nom_tenda);
  87.         $worksheet->setInputEncoding('UTF-8');
  88.         $worksheet->setMargins(0.25);
  89.         $worksheet->centerHorizontally(1);
  90.         $worksheet->activate();
  91.        
  92.         $format_header =& $workbook->addFormat();
  93.         $format_header->setBold();
  94.         $format_header->setSize(12);
  95.        
  96.     }
  97.    
  98.     if($datamem != $rs_vart['data']){
  99.        
  100.         $datamemg = giragiradata($rs_vart['data']);
  101.        
  102.         $worksheet->write($fila, 0, $nom_tenda,$format_header);
  103.         $worksheet->write($fila, 1, $datamemg,$format_header);
  104.        
  105.         $fila++;
  106.        
  107.         $worksheet->write($fila, 0, 'Codi',$format_header);
  108.         $worksheet->write($fila, 1, 'Article',$format_header);
  109.         $worksheet->write($fila, 2, 'Partides',$format_header);
  110.         $worksheet->write($fila, 3, 'Pes',$format_header);
  111.         $worksheet->write($fila, 4, 'Previsio',$format_header);
  112.        
  113.         $fila++;
  114.         $datamem = $rs_vart['data'];
  115.     }
  116.    
  117.     $format_row =& $workbook->addFormat();
  118.     $format_row->setSize(12);
  119.  
  120.     // Nom Article
  121.     $str_narticle = "SELECT nom_article FROM famart WHERE id_article=".$rs_vart['id_article'];
  122.     $sql_narticle = mysql_query($str_narticle) or die("Error SQL Nom Article: ".$str_narticle."<br>".mysql_error());
  123.     $nrg_narticle = mysql_num_rows($sql_narticle);
  124.    
  125.     if($nrg_narticle !=0){
  126.  
  127.         $rs_narticle = mysql_fetch_array($sql_narticle);
  128.         $nomarticle  = $rs_narticle['nom_article'];
  129.    
  130.     }else{
  131.    
  132.         if($rs_vart['id_article'] >= 999997 ){
  133.             $nomarticle = "COMODI";
  134.         }else{
  135.             $nomarticle = " // SENSE NOM // ";
  136.         }
  137.        
  138.     }
  139.    
  140.     if($perce != 0){
  141.         $previsio = $rs_vart['partides'] + ($rs_vart['partides'] * $perce / 100);
  142.     }else{
  143.         $previsio = $rs_vart['partides'];
  144.     }
  145.    
  146.     $worksheet->write($fila, 0, "$rs_vart[id_article]");
  147.     $worksheet->write($fila, 1, "$nomarticle");
  148.     $worksheet->setColumn($fila, 1, 30);
  149.     $worksheet->write($fila, 2, "$rs_vart[partides]");
  150.     $worksheet->write($fila, 3, "$rs_vart[pes]");
  151.     $worksheet->write($fila, 4, "$previsio");
  152.    
  153.     $fila++;
  154.  
  155. }
  156.  
  157. $workbook->close();
  158. ?>

Lo que hace el código es que cuando detecta un cambio de empresa/tienda separa los resultados en diferentes hojas según la tienda que sea.

Las hojas me las crea correctamente, en la primera mete el resultado correcto, pero en las demás me las deja en blanco y mi duda es porque?

Sobre la liniea 86 podréis ver donde se crea la nueva hoja

Saludos y gracias
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #2 (permalink)  
Antiguo 18/11/2009, 09:48
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 2 meses
Puntos: 10
Respuesta: Spreadsheet_Excel_Writer + addWorksheet

Hola de nuevo, ya esta, mea culpa, no reseteaba la variable Fila y el texto se iba hacia abajo...

no comments!!!

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #3 (permalink)  
Antiguo 03/07/2013, 17:38
 
Fecha de Ingreso: julio-2013
Mensajes: 2
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Spreadsheet_Excel_Writer + addWorksheet

estimado como resolviste el problema,,,,,,

yo tengo un problema similar ya que solo meja crear 8 hojas en el excel las demas me las tira como un error.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.