Witajcie, po raz kolejny..
moim założeniem jest żeby plik index.php do którego dowiązany jest index.tpl includował plik conversion.php (z nim z kolei komunikat.tpl) a ten plik conversion.php generował by plik xls.php... tak aby ten wygenerował zawartość tabeli dla excela, korzystając z szablonu (excel.tpl)... Zrobiłem nawet coś takiego bez Smarty i działa...ale z przełożeniem na smarty nie moge sobie poradzić.. oto kod conversion.php
  1. <?php
  2.  include "smart_config.inc";
  3.  $n_plik = $_GET['plik'];
  4.  if (file_exists('dane/'.$n_plik.'')) {
  5. $plik1 = fopen ("dane/{$n_plik}", 'r+');
  6. flock ($plik1, LOCK_EX);
  7. $dane = file('dane/'.$n_plik.'');
  8.  
  9. flock ($plik1, LOCK_UN);
  10. fclose ($plik1);
  11. $plik2 = fopen("xls.php", "w");
  12. if (!$plik2) die ("Nie można utworzyć pliku.");//plik tylko do zapisu, wskaźnik na jego początek, obcięcie do zerowej długości
  13.  fputs($plik2, "<? include "smart_config.inc";
  14.  header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=filename.xls");
  15. header("Pragma: no-cache");
  16. header("Expires: 0");");
  17.  fclose ($plik2);
  18.  $plik1 = fopen("xls.php", "a");
  19. for ($i=1; $i<10; $i++) {
  20. $dane[$i-1] = str_replace("", "", $dane[$i-1]);  
  21.  $dane[$i-1] = ("<tr><td colspan="5">{$dane[$i-1]}</td></tr>");
  22.  }
  23.  $dane[$i] = ("<tr class="highlight"><td style="text-algin:right;">SYMBOL</td><td>NAZWA TOWARU</td><td>ILOŚĆ</td>
  24.  <td>CENA Z</td><td>WARTOŚĆ Z</td></tr>");
  25. for ($i=13; $i<(count($dane)-5); $i++) {
  26. $pom1 = "<tr>";
  27. $wers = explode ("|", $dane[$i]);
  28. $pom2 = "";
  29. for ($k=1; $k<(count($wers)-1); $k++) {
  30.  $pom2 .= "<td>{$wers[$k]}</td>";
  31.  }
  32. $dane[$i] = $pom1.$pom2."</tr>";
  33. }
  34. $dane[count($dane)-4] = str_replace("", "", $dane[count($dane)-4]);
  35. $wers = explode ("|", $dane[count($dane)-4]);
  36. $dane[$i+1] = "<tr class="highlight"><td style="text-algin:right;" colspan="4">{$wers[0]}</td><td>{$wers[1]}</td></tr>";
  37.  fputs($plik1, '$smarty->assign('WERS', $dane);
  38. $smarty->display('excel.tpl'); ?>');
  39. fclose($plik1);
  40. $komunikat = '<a href="xls.php"> POBIERZ WYGENEROWANY PLIK!! </a>';
  41. }
  42. else {
  43. $komunikat = "Brak pliku do konwersji";
  44. }
  45.  $smarty->assign('komunikat', $komunikat);
  46.  $smarty->display('komunikat.tpl');
  47. ?>
założenie na początku jest takie ze do systemu szablonów przekazywane są pełne wiersze tabeli łącznie z <tr> i </tr> --- to chciałbym poprawić w dalszej kolejności... Oraz plik excel.tpl:
  1. <head>
  2. {literal}
  3. td {height:18px; border: 1px solid gray; font-family: Verdana}
  4. tr.highlight td {text-align:right; font-weight: bold; background-color: silver}
  5. </style>
  6. {/literal}
  7. </head>
  8. <body>
  9. <colgroup width="150" align="left"></colgroup>
  10. <colgroup width="300" align="right"></colgroup>
  11. <colgroup width="70" align="right"></colgroup>
  12. <colgroup width="70" align="right"></colgroup>
  13. <colgroup width="100" style="background-color: silver; mso-number-format: 0\.E+00;" align="right"></colgroup>
  14. {section name=s1 loop=$WERS}
  15. {$WERS[s1]}
  16. {/section}
  17. </table>
  18. </body>
  19. </html>

Z góry dziękuje bardzo za pomoc... jeśli przyjąłem jakieś złe założenia lub coś jest w ten sposób nie wykonalne, prosiłbym o wytłumacznie gdyż to jest moja pierwsza strona w SMARTY..

Pozdrawiam smile.gif