Web Design Blog / Programowanie:

Import i eksport plików w formacie CSV w PHP

Data publikacji: 23 października 2018

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.6 (92%) głosów: 10


Komentarze

Brak komentarzy.

Dodaj swój komentarz