Web Design Blog / Programowanie:

Import i eksport plików w formacie CSV w PHP

CSV to bardzo sympatyczny format zapisu danych tabelarycznych. Zapisuje się w nim dane za pomocą tekstu oddzielając kolumny przecinkiem a rekordy znakiem nowej linii. To powoduje, że surowe dane są w pewnym stopniu możliwe do przeglądania przez człowieka. Do jego postaci często eksportuje się bazy danych. Jest obok XMLa i JSONa najpopularniejszym formatem do tego typu działań.

W tym przewodniku pokażę jak wczytać plik CSV do tablicy i wygenerować prostą tabelkę aby sprawdzić czy wszystko się nam dobrze zaczytało. Potem stworzyć drugą tablicę i wyeksportować ją do pliku.

Wczytywanie pliku z danymi

Przygotujmy sobie jakieś dane. Na przykład takie:

A,B,D,3,2,1,1,0,1,0,1
C,D,E,7,8,5,1,1,0,0,1
F,H,G,9,2,0,1,0,1,0,0
B,B,D,3,2,1,0,0,0,0,1
D,D,E,7,8,5,0,0,1,0,0
Y,H,G,9,2,1,0,1,0,1,0
P,B,D,3,2,2,0,1,0,1,1
B,D,E,7,8,6,0,0,0,1,1
N,H,G,9,2,1,1,1,1,0,0
M,B,D,3,2,2,1,0,1,0,0
Z,D,E,7,8,6,1,1,1,1,1
X,H,G,9,2,1,0,0,0,0,0

Załóżmy że są to jakieś ważne dane, na których chcemy przeprowadzać obliczenia lub wprowadzić je do innej bazy. Zapisujemy jako zwykły plik tekstowy ale z rozszerzeniem .csv czyli plik nazywamy przykładowo „dane.csv”.

Kod PHP wczytujący CSV będzie wyglądał tak:

(Założyłem, że plik jest w tym samym folderze co skrypt w php)

<?php

$data = array_map('str_getcsv', file('dane.csv'));

Być może trudno w to uwierzyć, ale to wszystko. Za pomocą instrukcji print_r($data) można sobie sprawdzić.

Możemy dla treningu wygenerować sobie przyjazną tabelę HTML na podstawie tablicy za pomocą:

 if (count($data) > 0): ?>
<table>
<?php foreach ($data as $row): array_map('htmlentities', $row); ?>
    <tr>
      <td><?php echo implode('</td><td>', $row); ?></td>
    </tr>
<?php endforeach; ?>
</table>
<?php endif; ?>

Efekt po ostylowaniu powinien wyglądać tak:

Zapisywanie pliku z danymi

Skoro nauczyliśmy się wczytywać fajnie by było opanować zapisywanie.

Odwróćmy dla urozmaicenia kolejność danych w nadrzędnej tablicy:

$data2 = array_reverse($data);

Teraz zapiszmy tablicę dwuwymiarową $data2 do pliku CSV. Instrukcja będzie wyglądać tak:

$fp = fopen('dane2.csv', 'w');

foreach ($data2 as $row) {
fputcsv($fp, $row);
}

fclose($fp);

Po uruchomieniu programu powinien nam się stworzyć osobny plik dane2.csv

Pliki CSV

Jak widać zgodnie z intencjami zapisał się nam plik z odwróconą kolejnością „wierszy”:
Dane wyjściowe CSV w PHP

Import i eksport plików w formacie CSV w PHP
4.5 (90%) głosów: 2

Autor: (29 lat)

Służę pomocą w razie wykonania / odnowienia strony lub sklepu internetowego dla twojej firmy niezależnie od twojej lokalizacji czy skali przedsięwziecia.

Tego typu wpisy piszę w wolnych chwilach lub pomiędzy projektami. Tylko pomyśl co mogę dla Ciebie zrobić w ramach usługi :-)

Zadaj pytanie lub skomentuj

Wyrażam zgodę na przetwarzanie moich danych osobowych przez firmę Paweł Mansfeld z siedzibą w Jastrzębiu-Zdroju, ul. Plebiscytowa 10, w celu udzielenia odpowiedzi, w tym przedłożenia oferty jeśli o nią pytam. Moje dane osobowe będą przetwarzane do czasu cofnięcia zgody lub przez okres niezbędny do ustalenia, dochodzenia lub obrony roszczeń. Mam prawo dostępu do danych, sprostowania, usunięcia lub ograniczenia przetwarzania, prawo sprzeciwu, prawo wniesienia skargi do organu nadzorczego i prawo do przeniesienia danych.

Komentarze publiczne

Brak komentarzy.
Otrzymuj powiadomienie o nowych artykułach

Wyrażam zgodę na przetwarzanie moich danych osobowych przez firmę Paweł Mansfeld z siedzibą w Jastrzębiu-Zdroju, ul. Plebiscytowa 10, w celu udzielenia odpowiedzi, w tym przedłożenia oferty jeśli o nią pytam. Moje dane osobowe będą przetwarzane do czasu cofnięcia zgody lub przez okres niezbędny do ustalenia, dochodzenia lub obrony roszczeń. Mam prawo dostępu do danych, sprostowania, usunięcia lub ograniczenia przetwarzania, prawo sprzeciwu, prawo wniesienia skargi do organu nadzorczego i prawo do przeniesienia danych.

*Bez obaw, nie udostępniam nikomu twojego adresu e-mail