![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 238 Pomógł: 1 Dołączył: 27.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
mam zrobioną bardzo rozbudowaną tabelke w Excelu i muszę ją wyświetlić na stronie. Poza tym nie zawsze będzie wyświetlana cała ta tabelka tylko wybrane jej elementy. Czy jest to w ogóle możliwe, czy oba te środowiska się "widzą", możliwa jest interakcje między Excelem a php?
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 0 Dołączył: 14.07.2003 Skąd: z epoki lodowcowej Ostrzeżenie: (0%) ![]() ![]() |
zalezy na jakiej platformie masz postawiony serwer www + php - jezeli jest to windows z zainstalowanym officem to przy pomocy COM-a mozesz zrobic doslownie wszystko z dokumentami officeowymi, natomiast jezeli jest to linux to niestety nie ruszysz nawet excela, chyba ze zapiszesz go w formacie CSV lub innym czysto tekstowym.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Ale COM nei działa na serwerach linuxowych, a takich jest najwięcej. Działa jedynie na Windowsowym. Może jakaś alternatywa? Mnie też interesuje temat importu excel->MySQL najlepiej za pomocą jednego kliknięcia myszom (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pozdrawiam Was |
|
|
![]()
Post
#5
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
a jak by się sprawdzało podane linki, to by człowiek więcej wiedział...
Inny przykład: http://www.asafeplace.co.uk/downloads/csv_importer.zip |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Ja używam kilku metod.
1. CSV 2. Import pliku excel do msAccess (bardzo proste) i export z msAcces do mysql przez ODBC Ale najczęściej: 3. Przez skonstruowanie w formule excela polecenia insert SQL'a opartego na danych które mają być przenoszone przykład Żadna z metod nie umożliwi ci prostego "odbierz maila" => "wrzuć na strone" jeżeli komórki będą poscalane a powtarzające się w liście nazwy i teksty będą wyciągane jako nagłówki poszczególnych segmentów listy. Wtedy pozostaje albo ręczne grzebanie albo zapis do pliku HTML i parsowanie wyrażeniami regularnymi co jest żmudne. Zawsze najskuteczniej jest mieć kontakt z kimś kto tworzy dane arkusze aby go uświadomić jak powinien to robić:) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
A jeśli jest to prosty plik excel? Bez scalania komórek? poprostu na samej górze nagłówki a potem dane? csv_importer odpada, ponieważ troszkę dużo z nim jest roboty :/ Dobry natomiast jest pomysł ze skonstuowaniem poleceń SQL`a a potem jego kopiowanie, ale co jeśli do wprowadznia mymy 1500 wierszy?
A tak a propos nie działą :/ Jak wpisuję w nowym wierszu w nowym dokumencie: Kod ="insert into beczkowozy values('"&dane!A2&"','"&dane!B2&"','"&dane!C2&"','"&dane!D2&"','"&dane!E2&"','"&dane!F2&"','"&dane!G2&"','"&dane!H2&"','"&dane!I2&"','"&dane!J2&"','"&dane!K2&"');" (wcześniej mając zapisane dane w pliku dane.xls w arkuszu o nazwie dane) wyrzuca mi komunikat, że: Cytat Znalezienie 'A2' w 'dane.xls' nie jest możliwe. Istnieją dwie możliwe przyczyny: Podana nazwa możę być niezdefiniowana Podana nazwa nie dotyczy prostokątnego zakresu komórek Szkoda :/ Kopiowanie tego polecenia troszkę zajmie :/ Na pewno jest jakaś prosta metoda, przeciesz csv_importer i phpMyAdmin to robi, ale troszkę dużo jest tam wypełniania, a ja ma ściśle określoną tabelę i niezabardzo wiem jak taki kod odpowiedzialny za import "wyciągnąć" z tych skryptów. Pozdrawiam Ten post edytował TomASS 16.06.2004, 08:32:52 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Z tym kopiowaniem i wklejaniem to przesadziłeś, przecież napisałem, że zapisujesz sobie arkusz do pliku sql (jaki sql kurde zwykła tekstowa serwetka .txt !) i wykonujesz go. Excel dysponuje 64 tysiącami wierszy ale skoro dane są w excelu to musi ci to wystarczyć (nie mogą przecież zajmować więcej niż 64 tys.)
A jeśli juz chcesz być takim automatem to użyj gotowej funkcji mysql do ładowania CSV'sów do bazy: Kod mysql> LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' -> LINES TERMINATED BY '\n'; http://dev.mysql.com/doc/mysql/en/LOAD_DATA.html |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
No troszkę przesadziłem :/ Ale nadal nie działa mi taki zapis ? Robię wszytko tak jak pokazałeś....kopiuję Twoja tabelke do excela, nazywam arkusz, zapisuje ją, Tworzę noy plik excela i tam wklejam to polecenie SQL które mi podałeś w przykładzie i każe mi wybierać plik...wybieram dane.xls i wyskakuje błąd (który podałem wyżej) :/
A co do LOAD...to da rade wywołać takie polecenie przez php? Jak podać adres do pliku? Skad MySQL wie gdzie podziewa się ten plik? Czyli mam plik dane.txt Kod B;;M;S;0000-00-00;;;0;100.00; B;;M;;2004-06-01;;;102;10015.00; K;;;;2004-06-01;;;43;10011.00; K;;T;;2004-06-03;;;28;10012.00; K;;T;E;2004-06-02;;;56;10010.00; B;;T;;2004-06-03;;;90;10008.00; B;;M;S;2004-06-01;;;513;30018.00; B;;;S;0000-00-00;;;0;100.00; B;Kłodzko;T;S;0000-00-00;;;0;200.00; B;;;S;0000-00-00;;;0;300.00; O;;Brak;S;2004-06-01;;;94;30025.00; B;;T;S;0000-00-00;;;0;100.00; B;;;S;0000-00-00;;;0;100.00; O;Wrocław;Brak;S;2004-06-01;;;832;30010.00; B;;T;;2004-06-03;;;140;10016.00; B;;T;;2004-06-01;;;204;10019.00; i teraz chcę je umieścić w bazie danych 'bd' i tabeli 'zamowienia' tak aby sie nie dublowaly: Kod LOAD DATA INFILE 'C:/Appserv/www/nop/dzis.txt' INTO TABLE zamowienia FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; w tworzy mi 156 rekordów w pustej tabeli :/ a ja chciałem wprowadzić tylko 16:/ LOAD DATA...wpisuje dane po kolei do komóre, czy istnieje możliwość zmiany ich kolejności i/lub nie brania pod uwagę niektórych komórek w tabeli MySQL? Wielkie dzięki Ten post edytował TomASS 16.06.2004, 09:10:49 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Jak to gdzie plik:
Po drugie zakładam że programista php w początkach swojej kariery poznał formuły w excelu i potrafi je obsługiwać (rany nie mówię o makrach VBA ale o najzwyklejszych formułach). W linku który dałem (na dole) jest gotowy plik z przykładem. Przykład: Plik excela Tak to ma działać. Ty masz sobie zrobić własną formułę pakującą dane do twojej tabeli mysql. I na koniec. Kody które chciałbyś "wyciagać" z phpmyadmina to nic innego jak polecenie LOAD DATA INFILE . Wszystkie programy klienckie go używają zarówno phpmyadmin jak i pozostałe, bo odbywa się po stronie serwera baz i jest najszybsze. Jeszcze jedno: może się zdarzyć że w pliku CVS będą puste wiersze ale z separatorami. Mysql załaduje je tak samo jak wiersze z danymi. Trzeba wtedy nałożyć na tabele indeksy unikatowe które zabezpieczą tabele przed wprowadzaniem bezsensownych danych albo wyciachać takowe wiersze z pliku CSV. Kolejność wierszy w tabeli będzie taka jak przy wprowadzaniu. Kolejność możesz sobie zminić w excelu albo zostawić jak jest i sortować wyniki zapytań. P.S. I nie edytuj ciągle swoich postów bo potem wygląda jakbym odpowiadał na pytania które nie padły (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował Indeo 16.06.2004, 09:16:59 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, działa, teraz tylko jeden, ostatni problem....
Mam dane w pliku w takiej postaci: Kod numer;przewoznik;ades;towar; a tabela w MySQL wyglada nastepujaco numer jakosc_przewoznika ilosc_km przewoznik miasto towar wielkosc adres Jak widać dane w pliku są poprzestawiane (nie są w opowiedniej kolejności) i nie wszystkie pola są brane pod uwagę. Czy da radę temu jakoś zaradzić, czy potrzebny jest skrypt który mi to odopwiednio zamieni (np doda średniki i pozamienia kolejności) :/ Wielkie dzięki jeszcze raz Ten post edytował TomASS 16.06.2004, 11:01:04 |
|
|
![]()
Post
#12
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a ja troche pokrece...
tresc pliku test.cvs Kod numer;przewoznik;ades;towar; 1;PRZEWOZNIK1;ul. Przekordna 3; Bułka; 2;PRZEWOZNIK2;ul. Przekordna 5; Pomidor; 3;PRZEWOZNIK3;ul. Przekordna 6; Kasza; 4;PRZEWOZNIK4;ul. Przekordna 7; Piwo; i samemu mozna napisac kod php ktory odpowiednio nam wrzuci te dane do mysql...
ja to tak zrobilem, troche duzo zapyan wychodzi ;] ale liczy sie pomysl... |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
mam coś takiego:
i teraz jak zrobić aby wpisy, które już są w bazie danyhc, które się dublują nie były wpisywane dwa razy............acha $path2' REPLACE INTO TABLE lub $path2' IGNORE INTO TABLE nie działa :/ |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Klucze unikatowe się kłaniają.
Poza tym może przyda się skasowanie zawartości tabeli przed załadowaniem danych? |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem coś takiego:
Ponieważ aby plik został wczytany przez LOAD DATA mus znajdować się na serwerze (chyba, że się mylę) i teraz przesyłam go do katalogu upload i niedziała, dane nie importują się :/ może, prawdopodobnie źle podaję ścieżkę, ale jak mam to zrobić prawidłowo. Jestem już tak blisko....pomóżcie proszę. Pozdrawiam Was serdecznie ps $path = "./upload/".$_FILES['userfile']['name']; też nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ten post edytował TomASS 17.06.2004, 15:48:57 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 23:22 |