Wczytanie zawartości pliku excel użytkownika do pamięci lub zmiennej w PHP

Wczytanie zawartości pliku excel użytkownika do pamięci lub zmiennej w PHP
PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Na czym polega mój problem. Mam napisaną swoją aplikację która korzysta z pliku excel. Działa to na razie, że wykorzystuje jeden konkretny plik excel, ale jak 100 osób uruchomi to nie wiem co się zadzieje, na pewno nic dobrego. Czy istnieje sposób, by zrealizować taki cel:
a) użytkownik klika przeglądaj, wybiera swój plik excel
b) system zaczytuje dane z pliku do pamięci (nie tworząc plików tymczasowych itp.) i przerzuca go do zmiennej $data.
Wspomnę, że korzystam z SimpleXLSX to odczytu danych excel oraz to, że nigdy czegoś takiego nie pisałem. Patrzyłem na takie funkcje jak jak tmpfile(),tempnam(), ale czy jest sens tutaj?
Z góry dziękuje za odpowiedzi :)

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1506
0

Wyjaśnij, co znaczy, że "korzysta z pliku excel". Wczytuje jego zawartość i tyle? Modyfikuje go? Co z nim robi?

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Wybacz, na szybko pisałem. Odczytuje dane tylko z 1 arkusza pliku xlsx. Całą resztą zajmuje się już skrypt.
Samo działanie polega tak. Odczyt danych z pliku xlsx (na razie jest to na sztywno z ftp), przetworzenie i przesłanie do zewnętrznego API.

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
2

Excel nie jest, nie był i nie będzie bazą danych. To ślepa uliczka. Masz moje osobiste "gratulacje" za promocję w/w rozwiązania.

Niejasno podane "wynalazki" które jak wydaje się chcesz stworzyć, są rzeźbieniem w brązowym materiale.
Im szybciej zejdziecie z tego i zrobicie "po bożemu", tym mniejsze straty czasu

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Nie Ja stawiam warunki, lecz osoba nade mną. :) Później będzie wykorzystywany format xml, ale na daną chwilę musi to być excel. Tym bardziej jest to pisane z myślą dla osób, które takie formaty jak xml itp. są poza ich rozumowaniem, więc miej to na uwadze. :)
Wyjaśnij mi "po bożemu" w jaki sposób można to zrobić? Uwzględniając oczywiście dla kogo sam system jest tworzony (może 5% wie czym jest xml, struktura itp., ale 100% wie czym jest Excel)
Chętnie poczytam :)

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
1
PawelIT Pawel napisał(a):

Nie Ja stawiam warunki, lecz osoba nade mną. :) Później będzie wykorzystywany format xml, ale na daną chwilę musi to być excel. Tym bardziej jest to pisane z myślą dla osób, które takie formaty jak xml itp. są poza ich rozumowaniem, więc miej to na uwadze. :)
Wyjaśnij mi "po bożemu" w jaki sposób można to zrobić? Uwzględniając oczywiście dla kogo sam system jest tworzony (może 5% wie czym jest xml, struktura itp., ale 100% wie czym jest Excel)
Chętnie poczytam :)

Dzielnie się bronisz innymi.
W moim życiu zawodowym, ilekroć trafiałem na Zakładowego Magika Excella (r), czuł się z "moralnym poparciem" góry, ale to on wcześniej "górę" w te prowizorki wciągał, klepał w nadgodzinach, był chwalony itd... Jak szef bywa madry, to zaczyna czuć, że coś oplata jego firmę, popada w zależność (od magika excelowego, który staje się bogiem)

jeśli nie wiesz, jak by to należało zrobić porządnie, bezpiecznie i korzystnie dla firmy, to albo:

  • mówiąc kolokwialnie 'zalewasz'
  • albo naprawdę nie masz pojęcia, co jest nieuczciwe jak sie z tego czerpie kasę.

Twoja argumentacja jest w stylu "ponieważ leje do samochodu benzynę, to jest on zbiornikiem na benzynę". Odróżniasz wejścia/wyjścia (ryjek na benzynę) od wewnętrznej struktury/konstrukcji/dynamiki?

I uwaga, bardzo trudna zagadka, skoncentruj się.
Dane najlepiej przechowuje się w ......... ?

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

W dużym skrócie dane w excelu to zamówienia naszych klientów i uwaga: to klienci wypełniają excel. My w to nie integrujemy :) w skrócie struktura to
nr zamówienia; przedmiot_ilosc; dane_do_dostawy ... itd. itd.
Wiem, że jest wiele możliwości mysql, sql, xml, itp., ale to klient wrzuca nie my :)
Załóżmy, że wrzuci taki plik z 100 zamówieniami, a mój skrypt to ma przetworzyć i stworzyć zamówienia u nas. :)

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
2

Opisz dokładniej co ta aplikacja z tym Excelem ma robić.
Jak to opisałeś przynajmniej mi i może @AnyKtokolwiek wydaję się, że ten Excel robi za bazę danych.
Baza to baza.
W ogóle wymianę danych przez excele robić to już jest problem.
Zawsze Pani Krysia nieświadoma wpływu może:

  • zmienić nazwy kolumn
  • dodać jakieś formuły
  • zmienić np. pojedynczą komórkę na pole daty, waluty itp.
PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Excel ma służyć tylko i wyłącznie jako lista zamówień, skrypt przetwarza tą listę wiersz po wierszu (niestety ograniczenia API 1 zamówienie - 1 zapytanie) i wysyła zapytania (mówiąc prościej tworzy zamówienia u nas w bazach, systemach i tym wszystkim). Oczywiście są też ograniczenia inne, ale nad tym już pracuje, np. automatyzacja niektórych informacji, by klient nie musiał podawać.

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
0
PawelIT Pawel napisał(a):

... i wysyła zapytania (mówiąc prościej tworzy zamówienia u nas w bazach, systemach i tym wszystkim)

Powiedz szefowi, ze taniej będzie to kupić, niż Tobie dawać do wykonania.

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
2

To robisz dla apki bazę.
Wgrywając plik dane są importowane do bazy.
Na bazie wiersz po wierszu są wykonywane Dalsze działania.

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Po części tak. Równie dobrze mógłbym przesyłać wybrane przez klientów pliki, przesyłać na ftp, a po przetworzeniu ustawić usuwanie. Logiczne i do zrobienia, ale kwestii jak dużo jest w stanie to wytrzymać.

AnyKtokolwiek napisał(a):
PawelIT Pawel napisał(a):

... i wysyła zapytania (mówiąc prościej tworzy zamówienia u nas w bazach, systemach i tym wszystkim)

Powiedz szefowi, ze taniej będzie to kupić, niż Tobie dawać do wykonania.

Naprawdę nie masz co robić w życiu, bo spojrzałem na Twoje posty i widzę, że się nudzisz. :) Jeżeli nic ciekawego nie masz lub nie umiesz wyjaśnić lub dać podpowiedzi w jaki inny sposób zrealizować. Proszę o nie udzielanie się tutaj. Pozdrawiam i życzę miłego dnia lub wieczoru. :)

@jurek1980 masz może pomysł czym inaczej coś takiego przetworzyć, ale by było czytelne dla typowej Grażyny. Chodzi o to, by klienci nasi nie musieli przeklikiwać w sklepie tylko wrzucić jakiś plik, np. ze 100 zamówieniami z potrzebnymi informacjami i, by system to przetworzył. Co do modyfikacji nie będzie problemem. :)
Oczywiście sql, mysql takie struktury informatyczne nie wchodzą w grę. XML będzie dodawany potem albo nawet automatyzacja będzie, że klienci klikną jeden przycisk i im samo pobierze z systemów z których korzystają, ale na razie dla klientów, którzy ręcznie to wprowadzają. Jak na razie na excelu wszystko działa bardzo dobrze. Pozostaje kwestia, by klient wczytał z dysku i to jakoś zaczytać. Na upartego mógłbym to na ftp, a po zaczytaniu do zmiennej usunąć z ftp, ale czy takie rozwiązanie jest dobre.

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
0

Może być Excel od biedy.
Ale kilka zasad. Zawsze dawaj do pobrania jakaś formatkę aby ktoś mógł ją wypełnić.
Powinno to ograniczyć ręczne grzebanie.
Od razu przy imporcie wyrzucaj błąd jeśli cokolwiek jest z plikiem nie tak.np. dodane wiersze przed nagłówkami, zmiana nazw nagłówków itp. tutaj masz pole do popisu żeby walidowac zamawiany towar, ilości i co tam jeszcze masz.
Zawsze trzymaj kopię takich exceli bo potem do klienta pojedzie 12000 betoniarek bo Excel przerobił sobie pole ilości na walutę a to skrypt odczytał jeszcze inaczej.

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Formatka i instrukcja na 100% będzie. Co do walidacji jeszcze nie posiadam, ale do zrobienia. A z tym przechowywaniem, ftp itp.?
W sumie miejsce mamy, więc mogę się pokusić o tworzenie osobnych folderów(nazwa:id klienta) i jako nazwy plików klientów wrzucić datę wrzucenia pliku, więc jakby z czymś było nie tak. To po dacie można to zmapować.

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
0

No i tak gdzieś masz tą apke hostowaną.
Dla wygody można zrobić strukturę katalogów typu: zamawiający/rok/miesiąc/dzień/plik_z_doklejonym-timestamp-microtime. Na wypadek kilkukrotnego wgrania tego samego pliku

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1506
2

Ale kurcze nie prościej zrobić prostego CRUDa dla klientów, żeby tak dodawali dane, zamiast przez Excela?

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Z warunków jakie otrzymałem to ma być jak najkrócej. W takim sensie, że wchodzi se klient, wybiera plik, wciska wczytaj zamówienia, pojawia mu się lista jego zamówień, sprawdza czy ok, jak ok to wysyła i pojawiają się komunikaty, które zamówienia utworzono, a które nie, jak nie utworzono to jaki jest powód, np. towaru nie ma na stanie, czy nie podał ilości itd. W dużym skrócie.

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
1
PawelIT Pawel napisał(a):

@jurek1980 masz może pomysł czym inaczej coś takiego przetworzyć, ale by było czytelne dla typowej Grażyny. Chodzi o to, by klienci nasi nie musieli przeklikiwać w sklepie tylko wrzucić jakiś plik, np. ze 100 zamówieniami z potrzebnymi informacjami i, by system to przetworzył. Co do modyfikacji nie będzie problemem. :)

Wrzut pliku (upload http - to jest powszechnie znane, jak wysłanie mailem zdjęcia do cioci Zosi, FTP jest zbędne) powinien być ostatnim etapem jego życia, powienien zostać zaimportowany do ... bazy danych (w odpowiednim, niskim statusie)
O ile rzeczywiście JEST POTRZEBA operowania wewnętrznego arkuszami, to inna historia, produkcja ich z bazy po zatwierdzeniu.

Oczywiście sql, mysql takie struktury informatyczne nie wchodzą w grę.

Oryginalne stwierdzenie.
Skoro nie chcesz być uważany za niekompetentnego, powinni Cię awansować na architekta, byle byś roboty nie dotykał.

Jak będą te XML, to będziesz latał po dwóch typach plików??? Chore

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1506
0
PawelIT Pawel napisał(a):

Z warunków jakie otrzymałem to ma być jak najkrócej. W takim sensie, że wchodzi se klient, wybiera plik, wciska wczytaj zamówienia, pojawia mu się lista jego zamówień, sprawdza czy ok, jak ok to wysyła i pojawiają się komunikaty, które zamówienia utworzono, a które nie, jak nie utworzono to jaki jest powód, np. towaru nie ma na stanie, czy nie podał ilości itd. W dużym skrócie.

Najkrócej w sensie liczba kroków, które klient ma wykonać?

Ale co ma do tego to, czy używasz Excela, czy bazę danych? I tu, i tu wynik końcowy będzie ten sam. Jedyna różnica taka, że korzystanie do tego celu z Excela/XMLa to czyste zuuuo i dużo bardziej męczące to będzie do zrobienia.

N3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 84
0
PawelIT Pawel napisał(a):

Działa to na razie, że wykorzystuje jeden konkretny plik excel, ale jak 100 osób uruchomi to nie wiem co się zadzieje, na pewno nic dobrego. Czy istnieje sposób, by zrealizować taki cel:

Jeśli dobrze rozumiem to jest możliwość że co najmniej 2 osoby są w stanie modyfikować ten sam plik w tym samym momencie? Jeśli tak to ten mechanizm jest zły gdyż zmiany jednej z osób zostaną utracone zaraz po tym jak druga osoba zapisze plik. Jedyna opcja przechowywania tego to bazy danych i transakcje. Natomiast jeżeli nie lubisz formatek to zawsze możesz generować na wejściu plik excelowy do pobrania, a przy zapisie sczytywać odpowiednie kolumny, aczkolwiek lepszy byłby jakiś formularz.

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Tylko formularz będzie polegał tak, że każde zamówienie będzie trzeba oddzielnie (tylko jaki to sens jak to samo mogą zrobić w sklepie u nas? xD). Chodzi o to, że klienci wrzucają coś co posiada 100 zamówień i to wysyła. Nie musząc klikać ani wpisać w formularzu. Chyba, że źle rozumiem pojęcie formularz. W skrócie przesłać 100 zamówień za 1 razem nie przeklikując, nie wypełniając formularza dla każdego zamówienia, a z tym xml to być może nie będę korzystał (chodzi o system baselinker). Spróbuje zrobić coś w stylu, że klient podaje swój token do baselinker, zaczytam za pomocą API z jego konta zamówienia o określonym statusie i do nas prześlę. Chyba, że szef będzie chciał tego xml, ale też nie problem bo xml generowany przez baselinker to wszystkie informacje potrzebne w sobie posiada, wystarczy odpowiednie zmapowanie kolumn. Tak, by klient po prostu wszedł w aplikację, wrzucił jedną rzecz, wysłał, dostał co utworzono, a co nie i tyle. Bez wypełniania formularzy, tworzenia od podstaw zamówień itp. Chyba, że dało, by się w bazie coś takiego zrobić?

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
0

Możesz zrobić dynamiczny formularz, w którym po wypełnieniu jednej pozycji pojawi się pole na wypełnienie następnej i tak np. do 100. Wtedy otrzymujesz prawie funkcjonalność takiego excela, przy okazji możesz na bieżąco sprawdzać stany magazynowe itd. wszystko zależy od tego co i jak chcesz zrobić.

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Można, by było, ale taki formularz miałby sporo pól 9 informacji o dostawie + 2 informacja (produkt + ilość) i to musiałoby być tyle ile chce klient produktów (np są klienci, którzy robią zamówienie na 150 produktów) + forma dostawy + forma płatności
I tak 300 zamówień + ograniczenia ma się taka aplikacja mieścić w pewnych rozmiarach. Tam coś koło 1000 szerokości + 700 wysokości

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
0

No ale pewnie niektóre rzeczy da radę potraktować jako zbiorcze. Przemyśl, pogadaj z szefem, bo jak zrozumiałem miał być Excel i już.

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1506
1

Ogólnie to wygląda jakby cofnąć się z technologią o 20 lat xD

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Może tak. @serek może Ty masz jakąś propozycję jak to optymalnie i czytelnie dla typowych grażyn i januszy to zrealizować. Jestem otwarty na sugestie :P Wydaje mi się, że szefowi z excelem chodziło o to, że klienci se wypełniają jakiś plik, np. na początku miesiąca i kiedy tam chcą wrzucają i to się tworzy. No ten excel był brany pod uwagę pewnie ze względu, że ~90% naszych klientów go używa, więc dla nich jest to proste i czytelne,a zmiana przyzwyczajeń byłaby czasochłonna.

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1506
0

No jakiś prosty sklep może postawić po prostu? Bo to co opisujesz to idealnie pasuje: wybór produktu, dostawa, itp.

PawelIT Pawel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Po przeanalizowaniu pewnych rzeczy itp. oraz po dyskusji na jednym ze znanym zagranicznym forum dla programistów. Mam już jasno określony cel w jaki sposób zrealizować to wszystko. Zostaję przy excelu (czuję lincz z wielu stron) i pomimo, że wiem jaki excel jest i jaki to przeżytek, ale nie dla mnie ten system. Moim zadaniem jest zadowolić klientów i stworzyć system, który będzie łatwy i czytelny dla nich. :) Można zamknąć temat. Dziękuje za odpowiedzi, podpowiedzi itd. itd.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.