Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ?odczyt plików excela przy użyciu php?
Forum PHP.pl > Forum > PHP
statek
Witam,
czy ma ktos pomysł jak odczytać pliki excela i zapisać je jako zwykły tekst, nie wykorzystując przy tym samej aplikacji ms office? Po prostu mam pełno plików excela z danymi i chciałbym je wszystkie zapisać jako tekstowe. Ręczne otwieranie plików raczej nie wchodzi w grę. Jakieś pomysły, sugestie?

Pozdrawiam.
em1X
http://lmgtfy.com/?q=php+excel+read
statek
googlowalem, ale tego nie znalazłem sad.gif

Głupia sprawa, ja nie potrzebuje aż takiego bajeranckiego odczytu. Wystarczyłoby odczytanie niepustych komórek w niepsutych wierszach i zapisanie tego jako plik textowy (nawet jako jeden string bez separatorów). A te narzędzia konwertują wszystko. Może wiecie jak odczytać taki plik excelowy, jak się do tego zabrać - z chęcią spróbowałbym napisać taką prostą funkcje?

Dzięki ogromne. Proszę powiedzcie mi jeszcze jak wymusić '+' w wartości zmiennej w GET. Jak dam link: index.php?zm=ala+basia&zm2=ala+ to potem przy odczycie + jest zmieniany na spacje. Próbowałem kodować/dekodowac url i nic mi nie wyszło. Jak to zrobić? Pozdrawiam.
edit
Użyłem rawurlencode przy tworzeniu odnośnika. I teraz w tablicy GET wartości są poprawne ale w adresie nie mam plusów tylko %2B. Co zrobić aby jednocześnie plus był w linku, w adresie wyświetlanym przez przeglądarkę i w tablicy GET?

Ślicznie proszę, podajcie jakąś wskazówkę, jak to zrobić, jak się dobrać do pliku binarnego .xls
Louner
Ja bym zapisał sobie arkusz z excela do formatu CSV, dostaniesz wtedy plik z bardzo przyjazną do importu zawartością ( wszyskie kolumny oddzielone średnikami, wiersze enterami ). Wtedy wystarczy tylko zwykła funkcja 'explode'.

Co do GET, pobieraj dane z plusem, a potem możesz wstawić do swojego skryptu PHP coś takiego:
  1. <?php
  2. foreach( $_GET as $key => $value ) {
  3.   $_GET[$key] = str_replace("+"," ",$value); // zamienia plusy na spacje
  4. }
  5. ?>
statek
Louner dzięki za wskazówkę. Wiem, że mogę zapisywać pliki xls jako csv ale, wtedy muszę każdy plik excela otworzyć w excelu aby dokonać takiego zapisu. Myślałem o tym aby sięgać do plików xls bez excela. Jednak po zastanowieniu i sprawdzeniu kilku faktów, rezygnuję z tego zamiaru. Nowa wersja excela zapisuje ponoć pliki przy pomocy zwykłych znaczników tekstowych - wreszcie jakieś sensowne rozwiązanie od ms:) Tak więc 'za chwilę' import binarnych xls straci rację bytu.

Co do GET, to nie działa takie rozwiązanie już sprawdzałem. Jeśli w adresie mam '+', to w tablicy GET mam spacje i nie mam co zamieniać:( Jakieś inne rozwiązanie?

Proszę zerknij również na: http://forum.php.pl/index.php?showtopic=123800&hl=
nie przychodzi mi do głowy prostsze rozwiązanie, a moje jest bardzo nieefektywne.

Pozdrawiam.
PS
Czy znasz jakiś edytor plików tekstowych (koniecznie z obsługą utf-8), który pozwala edytować kolumny: wklejać/zaznaczać tekst kolumnami?
Louner
Sorry, źle zrozumiałem o co Ci chodziło z $_GET, żeby przkazać plusa przez GET trzeba podać w adresie %2B zamiast '+', na przykład:
Kod
test.php?dzialanie=piec%2Bsiedem


da w tablicy $_GET
  1. <?php
  2. Array ( [dzialanie] => piec+siedem )
  3. ?>


Ten sposób działa, bo 2B to '+' w tabeli ASCII ( http://www.asciitable.com/ ).

Nie znam takiego edytora.
statek
A da się podać w adresie '+' i jednocześnie odczytać go jako '+'? Tak, żeby w adresie i w tablicy GET był plus?
blooregard
Cytat
A da się podać w adresie '+' i jednocześnie odczytać go jako '+'? Tak, żeby w adresie i w tablicy GET był plus?

Nie da się. Sam możesz sobie sprawdzić:
  1. index.php:
  2. <?php
  3. var_dump($_GET);
  4. ?>


Po wywołanu:
localhost/index.php?a=b+c

otrzymujesz w wyniku:
Kod
array
  'a' => string 'b  c' (length=4)

czyli w miejscu znaku + z url-a masz puste miejsce (spację)

Wystarczy sprawdzić.
statek
blooregard dzięki za konkretną odpowiedź. Ja to wszystko sprawdziłem, o czym pisałeś. A pytałem, bo myślałem, że jest jakaś funkcja sprytna, której nie znalazłem w manualu, która na to pozwala. Jedyne roziązanie jakie mi przyszło do głowy do zamiana w stringu adresu (otrzymanym z GET) spacji na plus. Wtedy by mi działąo wszystko jak chciałem, ale czy to niesie z sobą jakieś negatywne konsekwencje? Coś o czym jeszcze nie wiem, a się zemści na mnie:)?

Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.