ホームページ  >  記事  >  php教程  >  PHPによるCSVファイルの読み込み/エクスポート

PHPによるCSVファイルの読み込み/エクスポート

WBOY
WBOYオリジナル
2016-08-04 08:56:181235ブラウズ

仕事ではインポート/エクスポートの要件が頻繁に発生します。一般的に使用される方法は次のとおりです。
CSV ファイルを読み取るには、読み取る行数と開始行数を設定するだけで、ページ単位で読み取ることができます。
CSV ファイルのエクスポートは 2 つの方法で実装されます。

/**<br> * CSVファイルを読み込みます<br> * @param string $csv_file csv ファイルのパス<br> * @param int $lines 行数を読み取ります<br> * @param int $offset 開始行番号<br> * @return array|bool<br> ​*/<br> public function 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 = array();<br />     while (($j++ < $lines) && !feof($fp)) {<br />         $data[] = fgetcsv($fp);<br />     }<br />     fclose($fp);<br />     $data を返します;<br /> }<br /> <br /> <br /> /**<br /> * CSVファイルをエクスポート<br /> * @param array $data データ<br /> * @param array $header_data データの最初の行<br /> * @param string $file_name ファイル名<br /> * @戻り文字列<br /> ​*/<br /> public function 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 as $key => $value) {<br>         $output = array();<br>         $output[] = $value['id'];<br>         $output[] = $value['名前'];<br>         echo iconv('utf-8','gbk//TRANSLIT','"'.implode('","', $output).""n");<br>     }<br> }<br> <br> /**<br> * CSVファイルをエクスポート<br> * @param array $data データ<br> * @param array $header_data データの最初の行<br> * @param string $file_name ファイル名<br> * @戻り文字列<br> ​*/<br> public function export_csv_2($data = [], $header_data = [], $file_name = '')<br> {<br>     header('Content-Type: application/vnd.ms-excel');<br>     header('Content-Disposition: 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 as $key => $value) {<br>             $header_data[$key] = iconv('utf-8', 'gbk', $value);<br>         }<br>         fputcsv($fp, $header_data);<br>     }<br>     $num = 0;<br>     //每隔$limit行,刷新一下出バッファ,不要太大,不要太小<br>$limit = 100000;<br> //メモリを無駄にせずにデータを一行ずつ取得します<br> $count = count($data);<br> If ($count > 0) {<br> for ($i = 0; $i $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 までご連絡ください。