Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Import XLS do PHP brak znaku "-"
adamzuk
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


Witam, mam problem z importem pliku xls do php.
Chciałbym wyświetlić zawartość pliku Excela, ma on dwie kolumny. W drugiej kolumnie czasami występują wartości ujemne.
Korzystam z klasy new Spreadsheet_Excel_Reader().
niestety przy wyświetlaniu po imporcie nie pokazują się minus w wartościach ujemnych.
Skrypt:
  1. require_once 'reader.php';
  2. $xls = new Spreadsheet_Excel_Reader();
  3.  
  4. $xls->setOutputEncoding('UTF-8');
  5. $xls->read("test1.xls");
  6.  
  7.  
  8. for ($i = 1; $i <= $xls->sheets[0]['numRows']; $i++) {
  9.  
  10.  
  11. $kole=$xls->sheets[0]['cells'][$i][2] ;
  12. echo"$kole<br>";
  13.  
  14. $kwotaa=$xls->sheets[0]['cells'][$i][1] ;
  15. echo"$kwotaa<br>";
  16.  
  17.  
  18.  
  19. }


Czy ktoś może mi pomoć(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Oprócz klucza "cells" w $xml->sheets[0] znajdziesz też klucz "cellsInfo" a w nim klucz "raw", pod którą przechowywana jest surowa wartość komórki - zobacz czy w tym elemencie też nie ma "-".
Go to the top of the page
+Quote Post
adamzuk
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


Czyli mam spawdzić wpisując tak:

  1. require_once 'reader.php';
  2. $xls = new Spreadsheet_Excel_Reader();
  3.  
  4. $xls->setOutputEncoding('UTF-8');
  5. $xls->read("test1.xls");
  6.  
  7.  
  8. for ($i = 1; $i <= $xls->sheets[0]['numRows']; $i++) {
  9.  
  10.  
  11. $kole=$xls->sheets[0]['cells'][$i][2] ;
  12. echo"$kole<br>";
  13.  
  14.  
  15. $kolei=$xls->sheets[0]['cellsInfo']['raw'][$i][2] ;
  16. echo"$kolei<br>";
  17.  
  18.  
  19. $kwotaa=$xls->sheets[0]['cells'][$i][1] ;
  20. echo"$kwotaa<br>";
  21.  
  22.  
  23.  



jeśli powyższe jest prawidłowe to nie pokazuje mi się nic pod zmienna $kolei (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Nie nie - ja nie pamiętam dokładnie układu tego co jest w "sheets[0]" - kiedyś na tym robiłem i pamiętam o tym cellsInfo - po prostu użyj print_r/var_dump na całym tym sheet i zobacz co jest gdzie (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
adamzuk
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


tak powinno być: $koler=$xls->sheets[0]['cellsInfo'][$i][2]['raw'];

ale pokazuje wartość bez minusa (IMG:style_emoticons/default/sad.gif)

Czy ktoś może ma jeszcze jakiś pomysł?
Go to the top of the page
+Quote Post
Sephirus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Jeśli tam też jest bez minusa to obawiam się, że się ta klasa pogubiła :| Coś z tym XLSem jest nie tak albo ona nie potrafi go przetworzyć dobrze. Proponuje poszukać innej klasy do obsługi tego (bo rozumiem, że XLSa zmieniać nie możesz)...
Go to the top of the page
+Quote Post
adamzuk
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


a znasz jakieś inne klasy?
hm... zamienić na?

to działa codzienny automat który pobiera excela z maila i porównuje go z wartoścami z bazy.
niestety ktoś kto wysyła mi excela nie ma możliwości zapisu ani w csv, ani w xml.
Go to the top of the page
+Quote Post
Sephirus
post
Post #8





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Szczerze mówiąc nie znam, zatrzymałem się na tej właśnie bo spełniała moje oczekiwania - musisz szukać u wujka Google (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
adamzuk
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


Dodam jeszcze, że czasami minus się pojawia a czasami nie....?

nikt nie może mi pomóc?

czy ktoś zna inne klasy do obsługi excela?

Ten post edytował adamzuk 10.12.2014, 07:53:49
Go to the top of the page
+Quote Post
jackraymund
post
Post #10





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

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


Ustaw
$xls->setOutputEncoding('mb');
i podeślij ten xls.
Go to the top of the page
+Quote Post
adamzuk
post
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


ustawiłem ale nic nie pomogło:)

link do ściagnięcia pliku
https://www.dropbox.com/s/ukcsmk7tqx2z2z1/test1.xls?dl=0
Go to the top of the page
+Quote Post
jackraymund
post
Post #12





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

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


Zrobiłem kod testowy i nadal wszystko śmiga.
  1. $loops = 100000;
  2. $rounds = 0;
  3. while($loops > $rounds){
  4. $data = new Spreadsheet_Excel_Reader();
  5. $data->setOutputEncoding('mb');
  6. $data->read('test.xls');
  7. for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
  8. $value = $data->sheets[0]['cells'][$i][1];
  9. if(!empty($value)){
  10. $int = intval($data->sheets[0]['cells'][$i][1]);
  11. if($int > 0){
  12. echo "\"".$int."\",";
  13. echo "<br>";
  14. }
  15. }
  16. }
  17. $rounds++;
  18. }

Przy http://screenshooter.net/100008827/kxihkaa
Ściągnij klasę stąd
http://sourceforge.net/projects/phpexcelre...xcel_Reader/2i/

Ten post edytował jackraymund 10.12.2014, 09:42:11
Go to the top of the page
+Quote Post
adamzuk
post
Post #13





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


pobrałem klasę z Twojego linku
zrobiłem plik: https://www.dropbox.com/s/ysjovglw0v88lci/test2.xls?dl=0
a skrypt taki:

  1. <?php
  2. require_once 'reader.php';
  3. $loops = 56;
  4. $rounds = 0;
  5. while($loops > $rounds){
  6. $data = new Spreadsheet_Excel_Reader();
  7. $data->setOutputEncoding('mb');
  8. $data->read('test2.xls');
  9. for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
  10. $value = $data->sheets[0]['cells'][$i][1];
  11. if(!empty($value)){
  12. $int = intval($data->sheets[0]['cells'][$i][1]);
  13. if($int > 0){
  14. echo "\"".$int."\",";
  15. echo "<br>";
  16. }
  17. }
  18. }
  19. $rounds++;
  20. }
  21.  
  22. ?>


wynik:

"2",
"12",
"2",
"1313",
"2",
"12",
"2",
"1313",
"2",
"12",
"2",
"1313",
"2",
"12",
"2",
"1313",
"2",
"12",
"2",


(IMG:style_emoticons/default/sad.gif) (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
jackraymund
post
Post #14





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

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


u mnie dziala. co masz za serwer i jaka wersja php?
Go to the top of the page
+Quote Post
adamzuk
post
Post #15





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


krasnal, php 5
Go to the top of the page
+Quote Post
Turson
post
Post #16





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


5 ile? 5.0 ?
Go to the top of the page
+Quote Post
adamzuk
post
Post #17





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


5.0.2
Go to the top of the page
+Quote Post
jackraymund
post
Post #18





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

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


Na 100% nie jestem pewien czy to wina serwera, ale mógłbyś chociaż spróbować. 5.0 to trochę stara wersja
Sam używam xampp, od hoho i nigdy problemów z nim nie miałem.
Najnowsza wersja php, łatwa obsługa itd.
https://www.apachefriends.org/pl/index.html
Zainstaluj, wylacz krasnala i w xampp control daj Start przy apache. I w x:\xampp\htdocs masz folder przypisany do localhost'a.

Ten post edytował jackraymund 10.12.2014, 14:21:40
Go to the top of the page
+Quote Post
adamzuk
post
Post #19





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.03.2010

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


ok, popróbuje, tylko z tego co pamietam w xamppie miałem jakieś problemu z bazami mssql, a na nich dużo pracuj..

sprawdzę i dam znać.
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: 26.08.2025 - 04:32