Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Generowanie plików XLS
dino6213221
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 18.01.2011

Ostrzeżenie: (0%)
-----


Witam. Mam problem przy generowaniu plików XLS. Oto mój kod:

  1. <?php
  2.  
  3. function random($liczba){
  4. $znaki = '1234567890qwertyuiopasdfghjkklzxcvbnm';
  5. $id = '';
  6. for ($i=0; $i<$liczba; $i++)
  7. {
  8. $id .= $znaki[rand()%(strlen($znaki))];
  9. }
  10. return $id;
  11. }
  12.  
  13.  
  14. function getTime()
  15. {
  16. $a = explode (' ',microtime());
  17. return(double) $a[0] + $a[1];
  18. }
  19.  
  20.  
  21. $Start = getTime();
  22. header('Content-Type: application/vnd.ms-excel');
  23. header('Content-Disposition: attachment;filename="01simple.xls"');
  24. header('Cache-Control: max-age=0');
  25. header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
  26. header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
  27. header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
  28. header ('Pragma: public'); // HTTP/1.0
  29.  
  30.  
  31. $test='<table border="1">';
  32.  
  33. for($a=0; $a<500; $a++){
  34. $test.='<tr>';
  35. for($b=0; $b<130; $b++){
  36. $test.='<td>'.random(10).'</td>';
  37. }
  38. $test.='</tr>';
  39. }
  40.  
  41.  
  42. $test.='</table>';
  43.  
  44. echo $test;
  45.  
  46. $End = getTime();
  47.  
  48. echo "<br><br>Time taken = ".number_format(($End - $Start),2)." secs";
  49.  
  50. ?>
  51.  


Plik uzupełnia mi się danymi ale podczas włączania wyskakuje błąd:

Plik, który próbujesz otworzyć XXX, ma inny format niż określony przez rozszerzenie pliku. Przed otwarciem pliku sprawdź, czy nie jest uszkodzony i czy pochodzi z zaufanego źródła...

Próbowałem różnych kombinacji header() ale dalej to samo. Podobno da się to rozwiązać poprzez zmianę pewnego klucza w rejestrze ale to nie o to mi chodzi.
Tworzenie pliku jest dużo wolniejsze przez gotowe klasy. Zależy mi na czasie tzn. 650 000 komórek w mniej niż 3 s.

Znacie jakieś rozwiązanie tego problemu?
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ale przecież Ty jako zawartość pliku podajesz zwykły tekst/HTML, a Excel korzysta ze swojego formatu - to nie ma prawa działać.

Google: excel file format.

Ten post edytował Crozin 29.09.2013, 17:30:59
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 16:34