> 백엔드 개발 > PHP 튜토리얼 > PHP는 csv 파일을 내보냅니다. 인코딩 내보내기 및 csv 파일 가져오기 및 내보내기 클래스를 지정합니다.

PHP는 csv 파일을 내보냅니다. 인코딩 내보내기 및 csv 파일 가져오기 및 내보내기 클래스를 지정합니다.

WBOY
풀어 주다: 2016-07-25 08:51:24
원래의
1515명이 탐색했습니다.
複製程式碼
  1. /*
  2. * MySQL 데이터를 CSV로 내보내는 PHP 코드
  3. *
  4. * MySQL의 결과를 보냅니다. 다운로드용 CSV 파일로 쿼리
  5. * UTF-8로 쉽게 변환.
  6. */
  7. /*
  8. * 데이터베이스 연결 설정
  9. */
  10. $conn = mysql_connect('localhost', 'login', 'pass') 또는 die(mysql_error());
  11. mysql_select_db('database_name', $conn) 또는 die(mysql_error($conn));
  12. mysql_query("SET NAMES CP1252");
  13. /*
  14. * SQL 쿼리 실행
  15. */
  16. $query = sprintf('SELECT field1,field2 FROM table_name');
  17. $result = mysql_query($query, $conn) 또는 die(mysql_error($conn));
  18. /*
  19. * 브라우저에 응답 헤더 보내기
  20. * 다음 헤더는 브라우저에 데이터를 csv 파일로 처리하도록 지시합니다. 호출 내보내기.csv
  21. */
  22. header('Content-Type: text/csv; charset=cp1252');
  23. header('Content-Disposition: attachment;filename=output.csv');
  24. /*
  25. * 출력 헤더 행(하나 이상의 행이 존재하는 경우)
  26. */
  27. $row = mysql_fetch_assoc($result);
  28. if ($row) {
  29. echocsv(array_keys($row));
  30. }
  31. /*
  32. * 출력 데이터 행(행이 하나 이상 존재하는 경우)
  33. */ 导takecsv文件
  34. while ($row) {
  35. echocsv($row);
  36. $row = mysql_fetch_assoc($result);
  37. }
  38. /*
  39. * 대부분의 CSV 구현과 일관성을 유지하면서 입력 배열을 csv 데이터로 에코합니다.
  40. * - 필요한 경우 큰따옴표를 엔클로저로 사용합니다.
  41. * - 큰따옴표를 사용하여 큰따옴표를 이스케이프합니다.
  42. * - CRLF를 다음과 같이 사용합니다. 줄 구분 기호
  43. */
  44. function echocsv($fields)
  45. {
  46. $separator = '';
  47. foreach ($fields as $field) {
  48. if ( preg_match('/\r|\n|,|"/', $field)) {
  49. $field = '"' . str_replace('"', '""', $field) .'"';
  50. }
  51. echo $separator . $field;
  52. $separator = ',';
  53. }
  54. echo "rn";
  55. }
  56. ?>
复system代码

二、php匯入與匯出csv檔的類別

php實作csv檔案的匯入和匯出類別。 代碼:

  1. /**
  2. * CSV 檔案處理類別
  3. */
  4. class Csv{
  5. public $csv_array;
  6. public $csv_str; //csv檔案資料
  7. public function __construct($param_arr, $column){
  8. $this->csv_array = $param_arr;
  9. $this->path = $path;
  10. $this->column = $column;
  11. }
  12. /**
  13. * 導出
  14. **/
  15. public function export(){
  16. if(empty($this->csv_array) | | empty($this->column)){
  17. return false;
  18. }
  19. $param_arr = $this->csv_array;
  20. unset($this->csv_array);
  21. $export_str> $export_str = implode(',',$param_arr['nav'])."n";
  22. unset($param_arr['nav']);
  23. //組裝資料
  24. foreach($param_arr as $ k=>$v){
  25. foreach($v as $k1=>$v1){
  26. $export_str .= implode(',',$v1)."n";
  27. }
  28. }
  29. //將$export_str導出
  30. header( "Cache-Control: public" );
  31. header( "Pragma: public" );
  32. header("Content-type:application/vndtype:application/vndtype:application/vndtype:application/vndtype:application/vndtype .ms-excel");
  33. header("Content-Disposition:attachment;filename=txxx.csv");
  34. header('Content-Type:APPLICATION/OCTET-STREAM');
  35. ob_start( );
  36. // $file_str= iconv("utf-8",'gbk',$export_str);
  37. ob_end_clean();
  38. echo $export_str;
  39. }
  40. /**
  41. * 導入
  42. **/
  43. public function import($path,$column = 3){
  44. $flag = flase;
  45. $code = 0;
  46. $msg = '未處理';
  47. $code = 0;
  48. $msg = '未處理';
  49. $filesize = 1; //1MB
  50. $maxsize = $filesize * 1024 * 1024;
  51. $max_column = 1000;
  52. //偵測檔案是否存在
  53. if($flag = if($flag = == flase){
  54. if(!file_exists($path)){
  55. $msg = '檔案不存在';
  56. $flag = true;
  57. }
  58. }
  59. / /偵測檔案格式
  60. if($flag === flase){
  61. $ext = preg_replace("/.*.([^.] )/","$1",$path);
  62. if($ext != 'csv'){
  63. $msg = '只能匯入CSV格式檔案';
  64. $flag = true;
  65. }
  66. }
  67. //偵測檔案大小
  68. if($flag === flase){
  69. if(filesize($path)>$maxsize){
  70. $msg = '匯入的檔案不得超過'.$maxsize.'B檔案';
  71. $flag = true;
  72. }
  73. }
  74. //讀取檔案
  75. if($flag == flase){
  76. $row = 0;
  77. $handle = fopen($path,'r');
  78. $dataArray = array();
  79. while($data = fgetcsv($handle,$max_column,",")){
  80. $num = count( $data);
  81. if($num $msg = '檔案不符合規格真實有:'.$num.'列資料';
  82. $flag = true;
  83. break;
  84. }
  85. if($flag === flase){
  86. for($i=0;$i if($row == 0) {
  87. break;
  88. }
  89. //組成資料
  90. $dataArray[$row][$i] = $data[$i];
  91. }
  92. }
  93. $ row ;
  94. }
  95. }
  96. return $dataArray;
  97. }
  98. }
  99. $param_arr = array(
  100. 'nav'=>array('用戶名','密碼','郵箱'),
  101. array(0=>array('xiaohai1','123456','xiaohai1@jbxue.com'),
  102. 1=>array('xiaohai2','213456', 'xiaohai2@jbxue.com'),
  103. 2=>array('xiaohai3','123456','xiaohai3@jbxue.com')
  104. ));
  105. $column = 3;
  106. $csv = new Csv($param_arr, $column);
  107. //$csv->export();
  108. $path = 'C:Documents and SettingsAdministratorTemptxxx.csv';
  109. $import_arr = $ettingsAdministratorTemptxxx.csv';
$import_arr = $cscsv ->import($path,3);
var_dump($import_arr);?>


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿