내가 한 노력들

[ PHP ] CSV파일 불러와서 웹에 Table 형태로 뿌려주기 본문

IT 공부/PHP

[ PHP ] CSV파일 불러와서 웹에 Table 형태로 뿌려주기

JONGI-N CHOI 2022. 2. 15. 15:25

codeigniter 4 프레임워크 기반으로 작성된 코드입니다. 

csv파일을 불러온 뒤, 해당 파일의 내용을 읽어와서 배열의 형태로 담아둔 후 테이블에 foreach로 뿌려주는 흐름입니다.

 

 

Controller 

public function getCsv()
{
    $total_arr = [];
    $file = fopen('C:/xampp/htdocs/Local-AWS-scraping/writable/uploads/csv/test.csv', 'r');
    while (($line = fgetcsv($file)) !== FALSE) {
        $arr = [];
        //$line is an array of the csv elements
        foreach ($line as $word) {
            $sep_arr = explode(',', $word);
            if (count($sep_arr) >= 2) {
                $arr = array_merge($arr, $sep_arr);
            } else {
                array_push($arr, $word);
            }
        }
        array_push($total_arr, $arr); 
    }
    fclose($file);


    echo view('dashboard_table', ['line' => $total_arr]);
}

 

View

<?= $this->extend('layout/main') ?>

<?= $this->section('content') ?>
    <div class="justify-center w-5/6 py-7">
        <table class="table">
            <tr>
                <?php foreach($line[0] as $row) : ?>
                    <th><?= $row ?></th>
                <?php endforeach; ?>
            </tr>
            <?php for($i = 1; $i < count($line); $i ++) : ?>
                <tr>
                    <?php foreach($line[$i] as $row) : ?>
                        <td><?= $row ?></td>
                    <?php endforeach; ?>
                </tr>
            <?php endfor; ?>
        </table>
    </div>
<?= $this->endSection() ?>

0번 인덱스에는 column명이 들어있으므로, 따로 빼서 <th>태그로 강조하는 형식으로 작성했습니다. 

 

그러면, 위의 사진처럼 왼쪽의 CSV파일이 오른쪽 사진처럼 웹상에서 table의 정리된 형태로 확인할 수 있습니다.