![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 3.09.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam za zadanie wczytać plik excela z danymi do mysql. Postanowiłem dokonać tego za pomocą skryptu php. Wyszukałem w sieci klasę Spreadsheet_Excel_Reader niestety jak zwykle nie obeszło się bez kłopotów.
Skrypt niestety nie chce działać. Wykrzacza się na funkcji read ponieważ po zakomentowaniu funkcji read skrypt się wykonuje dalej. Niewiem co jest grane ponieważ przykład nie jest jakoś zbyt skomplikowany. Uruchamiam na krasnalu jak i na serwerze cba.pl i dalej to samo. W przeglądarce pojawia się informacja: CODE Fatal error: Maximum execution time of 120 seconds exceeded in c:\usr\krasnal\www\katalog\oleread.inc on line 172 zwiększyłem limit czasu funkcją set_time_limit(300); niestety nie dało to żadnych rezultatów zresztą plik testowy xls ma około 30kB więc o czym mowa. Już sam niewiem co może być nie tak oto kod CODE <? //include("host.php"); require_once 'reader.php'; $xls = new Spreadsheet_Excel_Reader(); $xls->setOutputEncoding('cp1250'); set_time_limit(300); $plik='test.xls'; $xls->read($plik); echo "witaj"; for ($i = 1; $i <= $xls->sheets[0]['numRows']; $i++) { for ($j = 1; $j <= $xls->sheets[0]['numCols']; $j++) { echo $xls->sheets[0]['cells'][$i][$j] . ' '; } echo '<br>'; } ?> proszę o jakieś sugestie Ten post edytował alfam17 3.09.2008, 16:38:32 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 6 Dołączył: 30.06.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
1. Utwórz jakiś inny plik XLS z powiedzmy wypełnioną jedną komórką i zobacz czy też się wiesza, jak tak to problem będzie w pliku testowym
2. Ostatni update klasy był w czerwcu 2007 i może XLS którego używasz jest zapisany w nowszym formacie? Jak nie ma tam cudów wianków to spróbuj go zapisać w formacie Excel95 czy 97, może to pomoże. 3. Pozostaje jedynie debug metody read, długa nie jest ale dużo skoków do innych metod i może być ciężko. Już wiem gdzie leży problem, tam jest taka pętla
i widocznie $block powinien kiedyś osiągnąć -2 a u Ciebie tak nie jest i to powoduje niekończącą się pętlę. Ten post edytował delfinium 3.09.2008, 19:00:10 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 3.09.2008 Ostrzeżenie: (0%) ![]() ![]() |
zapisanie w formacie excel 97 pomogło. Najciekawsze jest to jak się fajnie skrypcik męczy przerabiając 46tyś wierszy
![]() ![]() Ten post edytował alfam17 3.09.2008, 19:44:21 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 6 Dołączył: 30.06.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
W środku tej pętli czytana jest zawartość pliku tak długo aż znajdzie wartość -2 i wtedy kończy działanie. W przypadku Twojego pliku nie znajduje jej i ciągle szuka powodując przekroczenie max_execution_time. Więc problem leży i tu i tu, bo w pętli nie przewidziano że może się zdarzyć sytuacja że wartości -2 nie będzie (a widocznie powinna być wg standardu) a Twoim pliku jej nie ma.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 3.09.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pojawił się jeszcze jeden problem mianowicie dziwnie zapisuje dane do bazy danych
w excelu w komórkach w których nie ma danych jest znak - natomiast w bazie danych w tym miejscu skrypt zapisuje liczbę 253 jak zrobić aby w bazie też zapisywał - albo wogule nie wypełniał tej wartości kodowanie w skrypcie mam ustawione: setOutputEncoding('ISO-8859-2'); |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 6 Dołączył: 30.06.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Przy odczycie porównaj zawartość komórki. Nie wiem jak to masz zorganizowane podam przykład w pseudokodzie
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 3.09.2008 Ostrzeżenie: (0%) ![]() ![]() |
też nad tym myślałem gorzej gdy właśnie któraś z komórek będzie miała taką wartość
![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 28.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
męczę się dziś pół dnia nad problemem odczytu z pliku XLS. Mam podobny problem. Ustawiłem:
lub na UTF-8, mieszałem też z
później dane wrzucam do pliku o nazwie 'abc.csv'. Pracuję na Ubuntu Serwer. I tutaj pojawia się problem taki, że wartości komórki za polskimi znakami są urywane, to znaczy, że mając np. słowo "Pamięci" w wejściowym XLS, na wyjściu mam "Pami". Nie wiem gdzie leży problem. Proszę o pomoc. Pozdrawiam, Mariusz problem był z rozszerzeniem pliku. Nie można wrzucać do *.csv. Utworzyłem abc.txt i wszystko działa poprawnie! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 05:08 |