ホームページ  >  記事  >  バックエンド開発  >  CVS ファイルの php クラス コードをインポートおよびエクスポートする

CVS ファイルの php クラス コードをインポートおよびエクスポートする

WBOY
WBOYオリジナル
2016-07-25 08:43:231097ブラウズ
CVS、php

CVS ファイルをインポートおよびエクスポートするための PHP クラス コード。このカスタム PHP クラスを通じて、データベース データと CVS ファイルの変換を実現できます

  1. /**
  2. *CSVファイル処理クラス
  3. */
  4. class Csv{
  5. public $csv_array; //csv 配列データ
  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) || 空($this->column)){
  17. return false;
  18. }
  19. $param_arr = $this->csv_array;
  20. unset($this->csv_array);
  21. $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. ヘッダーをエクスポートします( "Cache-Control: public" ); header( "Pragma: public" );
  31. header("Content-type:application/vnd.ms-excel");
  32. header("Content-Disposition:attachment;filename=txxx.csv");
  33. header(' Content -Type:APPLICATION/OCTET-STREAM');
  34. ob_start();
  35. // $file_str= iconv("utf-8",'gbk',$export_str);
  36. ob_end_clean();
  37. echo $export_str;
  38. }
  39. /**
  40. * インポート
  41. **/
  42. public function import($path,$column = 3){
  43. $flag = flase;
  44. $code = 0;
  45. $msg = '未処理';
  46. $filesize = 1; //1MB
  47. $maxsize = $filesize * 1024 * 1024;
  48. $max_column = 1000;
  49. //ファイルが存在するかどうかを確認します
  50. if($flag === flase){
  51. if(!file_exists($path) ) {
  52. $msg = 'ファイルが存在しません';
  53. $flag = true;
  54. }
  55. }
  56. //ファイル形式を検出
  57. if($flag === flase){
  58. $ext = preg_replace("/.*. ([^.]+)/","$1",$path);
  59. if($ext != 'csv'){
  60. $msg = 'CSV形式のファイルのみインポート可能';
  61. $flag = true;
  62. }
  63. }
  64. //ファイルサイズを検出
  65. if($flag === flase){
  66. if(filesize($path)>$maxsize){
  67. $msg = 'インポートされたファイルは超えてはなりません'.$maxsize . 'B file';
  68. $flag = true;
  69. }
  70. }
  71. //ファイルを読み込みます
  72. if($flag == flase){
  73. $row = 0;
  74. $handle = fopen($path,'r' );
  75. $dataArray = array();
  76. while($data = fgetcsv($handle,$max_column,",")){
  77. $num = count($data);
  78. if($num < $column) {
  79. $msg = 'ファイルが仕様を満たしていません。True: '.$num.' ;
  80. $flag = true;
  81. Break;
  82. }
  83. if($flag === flase){
  84. for($ i=0;$i<3;$i++){
  85. if($row == 0){
  86. Break;
  87. }
  88. //データを構築
  89. $dataArray[$row][$i] = $data [$i ];
  90. }
  91. }
  92. $row++;
  93. }
  94. }
  95. return $dataArray;
  96. }
  97. }
  98. $param_arr = array(
  99. 'nav'=>array('ユーザー名','パスワード' ,' メール'),
  100. array(0=>array('xiaohai1','123456','xiaohai1@zhongsou.com'),
  101. 1=>array('xiaohai2','213456','xiaohai2@ zhongsou.com'),
  102. 2=>array('xiaohai3','123456','xiaohai3@zhongsou.com')
  103. ));
  104. $column = 3;
  105. $csv = 新しい Csv($param_arr, $column );
  106. //$csv->export();
  107. $path = 'C:Documents and SettingsAdministratorLocal SettingsTemptxxx.csv';
  108. $import_arr = $csv->import($path,3);
  109. var_dump ($ import_arr);
  110. ?>
コードをコピー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。