>php教程 >php手册 >PHP 읽기/내보내기 CSV 파일

PHP 읽기/내보내기 CSV 파일

WBOY
WBOY원래의
2016-08-04 08:56:181297검색

직장에서는 종종 가져오기/내보내기 요구 사항이 있습니다. 다음은 일반적으로 사용되는 방법입니다.
CSV 파일을 읽으려면 페이지 단위로 읽을 수 있습니다. 읽을 줄 수와 시작 줄 수만 설정하면 됩니다.
두 가지 방법으로 구현된 CSV 파일을 내보냅니다.

/**<br> * CSV 파일 읽기<br> * @param string $csv_file csv 파일 경로<br> * @param int $lines 읽을 줄 수<br> * @param int $offset 시작줄 번호<br> * @return 배열|bool<br> ​*/<br> 공개 함수 read_csv_lines($csv_file = '', $lines = 0, $offset = 0)<br> {<br>     if (!$fp = fopen($csv_file, 'r')) {<br>         false를 반환합니다.<br>     }<br>     $i = $j = 0;<br>     while(false !== ($line = fgets($fp))) {<br>         if ($i  < $offset) {<br />             계속;<br />         }<br />         휴식;<br />     }<br />     $data = 배열();<br />     동안(($j  <$lines) && !feof($fp)) {<br />         $data[] = fgetcsv($fp);<br />     }<br />     fclose($fp);<br />     $data 반환;<br /> }<br /> <br /> <br /> /**<br /> * CSV 파일 내보내기<br /> * @param 배열 $data 데이터<br /> * @param array $header_data 데이터의 첫 번째 행<br /> * @param string $file_name 파일명<br /> * @return 문자열<br /> ​*/<br /> 공개 함수 export_csv_1($data = [], $header_data = [], $file_name = '')<br /> {<br />     header('Content-Type: application/octet-stream');<br />     header('Content-Disposition: attachment; filename=' . $file_name);<br />     if (!empty($header_data)) {<br />         echo iconv('utf-8','gbk//TRANSLIT','"'.implode('","',$header_data).'"'."n");<br />     }<br />     foreach($data를 $key로 =>$value) {<br>         $output = 배열();<br>         $output[] = $value['id'];<br>         $output[] = $value['name'];<br>         echo iconv('utf-8','gbk//TRANSLIT','"'.implode('","', $output).""n");<br>     }<br> }<br> <br> /**<br> * CSV 파일 내보내기<br> * @param 배열 $data 데이터<br> * @param array $header_data 데이터의 첫 번째 행<br> * @param string $file_name 파일명<br> * @return 문자열<br> ​*/<br> 공개 함수 export_csv_2($data = [], $header_data = [], $file_name = '')<br> {<br>     header('Content-Type: application/vnd.ms-excel');<br>     header('콘텐츠 처리: attachment;filename='.$file_name);<br>     header('Cache-Control: max-age=0');<br>     $fp = fopen('php://output', 'a');<br>     if (!empty($header_data)) {<br>         foreach($header_data($key)=>$value) {<br>             $header_data[$key] = iconv('utf-8', 'gbk', $value);<br>         }<br>         fputcsv($fp, $header_data);<br>     }<br>     $num = 0;<br>     //每隔$limit行,刷new一下输流buffer,不要大大,也不要大小<br>$한도 = 100000;<br> //메모리 낭비 없이 한 줄씩 데이터 가져오기 <br> $count = 개수($data);<br> If ($count > 0) {<br> for ($i = 0; $i < $count; $i ) {<br />                $num ;<br /> ​​​​​​ //너무 많은 데이터로 인해 발생하는 문제를 방지하기 위해 출력 버퍼를 새로 고칩니다.<br />                if ($limit == $num) {<br />                    ob_flush();<br /> 플러시();<br />                   $num = 0;<br />             }<br />              $row = $data[$i];<br /> foreach ($row as $key => $value) {<br>                $row[$key] = iconv('utf-8', 'gbk', $value);<br>             }<br>                  fputcsv($fp, $row);<br>         }<br> }<br> ​​fclose($fp);<br> }[건조한 정보 공유]에 대한 자세한 내용은 PHP 엔지니어 구독 계정을 팔로우하세요.
PHP 읽기/내보내기 CSV 파일

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.