Heim  >  Artikel  >  Backend-Entwicklung  >  php导出csv数据(浏览器中输出提供下载或保存到文件)

php导出csv数据(浏览器中输出提供下载或保存到文件)

WBOY
WBOYOriginal
2016-07-25 08:53:201195Durchsuche
  1. /**
  2. * 导出数据到CSV文件
  3. * @param array $data 数据
  4. * @param array $title_arr 标题
  5. * @param string $file_name CSV文件名
  6. */
  7. function export_csv(&$data, $title_arr, $file_name = '') {
  8. ini_set("max_execution_time", "3600");
  9. $csv_data = '';
  10. /** 标题 */
  11. $nums = count($title_arr);
  12. for ($i = 0; $i $csv_data .= '"' . $title_arr[$i] . '",';
  13. }
  14. if ($nums > 0) {
  15. $csv_data .= '"' . $title_arr[$nums - 1] . "\"\r\n";
  16. }
  17. foreach ($data as $k => $row) {
  18. for ($i = 0; $i $row[$i] = str_replace("\"", "\"\"", $row[$i]);
  19. $csv_data .= '"' . $row[$i] . '",';
  20. }
  21. $csv_data .= '"' . $row[$nums - 1] . "\"\r\n";
  22. unset($data[$k]);
  23. }
  24. $csv_data = mb_convert_encoding($csv_data, "cp936", "UTF-8");
  25. $file_name = empty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name;
  26. if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { // 解决IE浏览器输出中文名乱码的bug
  27. $file_name = urlencode($file_name);
  28. $file_name = str_replace('+', '%20', $file_name);
  29. }
  30. $file_name = $file_name . '.csv';
  31. header("Content-type:text/csv;");
  32. header("Content-Disposition:attachment;filename=" . $file_name);
  33. header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
  34. header('Expires:0');
  35. header('Pragma:public');
  36. echo $csv_data;
  37. }
复制代码

2,php导出csv数据,并保存到文件

  1. function export_csv($data, $title_arr, $file_name = '') {

  2. $csv_data = '';

  3. /** 标题 */

  4. $nums = count($title_arr);
  5. for ($i = 0; $i $csv_data .= '"' . $title_arr[$i] . '",';
  6. }
  7. if ($nums > 0) {

  8. $csv_data .= '"' . $title_arr[$nums - 1] . "\"\r\n";
  9. }
  10. foreach ($data as $k => $row) {

  11. for ($i = 0; $i $row[$i] = str_replace("\"", "\"\"", $row[$i]);
  12. $csv_data .= '"' . $row[$i] . '",';
  13. }
  14. $csv_data .= '"' . $row[$nums - 1] . "\"\r\n";
  15. unset($data[$k]);
  16. }
  17. $file_name = empty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name;

  18. file_put_contents($file_name, $csv_data) ;
  19. }
复制代码

附,php导出csv数据的调用示例(保存到文件):

  1. $file_name="/var/www/tmp/test.csv" ;
  2. $header = array(
  3. '0' => '参数ID',
  4. '1' => '参数名称',
  5. '2' => '统计次数',
  6. '3' => '统计次数百分比',
  7. '4' => '唯一用户数',
  8. '5' => '唯一用户数百分比',
  9. '6' => '人均次数'
  10. );
  11. $csvList = array(array("111", "title", "12", "100%", "23", "50%", "4")) ;
  12. export_csv($csvList, $header, $file_name) ;
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn