CVS ファイルをインポートおよびエクスポートするための PHP クラス コード。このカスタム PHP クラスを通じて、データベース データと CVS ファイルの変換を実現できます
- /**
- *CSVファイル処理クラス
- */
- class Csv{
- public $csv_array; //csv 配列データ
- public $csv_str; //csv ファイル データ
- public function __construct($param_arr, $column){
- $this->csv_array = $param_arr;
- $this-> path = $path;
- $this->column = $column;
- }
-
- /**
- * エクスポート
- **/
- public function export(){
- if(empty($this->csv_array) || 空($this->column)){
- return false;
- }
- $param_arr = $this->csv_array;
- unset($this->csv_array);
- $export_str = implode(',',$param_arr ['nav'])."n";
- unset($param_arr['nav']);
- //データを組み立てる
- foreach($param_arr as $k=>$v){
- foreach($v as $ k1=>$v1){
- $export_str .= implode(',',$v1)."n";
- }
- }
- // $export_str
- ヘッダーをエクスポートします( "Cache-Control: public" ); header( "Pragma: public" );
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:attachment;filename=txxx.csv");
- header(' Content -Type:APPLICATION/OCTET-STREAM');
- ob_start();
- // $file_str= iconv("utf-8",'gbk',$export_str);
- ob_end_clean();
- echo $export_str;
- }
-
- /**
- * インポート
- **/
- public function import($path,$column = 3){
- $flag = flase;
- $code = 0;
- $msg = '未処理';
- $filesize = 1; //1MB
- $maxsize = $filesize * 1024 * 1024;
- $max_column = 1000;
-
- //ファイルが存在するかどうかを確認します
- if($flag === flase){
- if(!file_exists($path) ) {
- $msg = 'ファイルが存在しません';
- $flag = true;
- }
- }
- //ファイル形式を検出
- if($flag === flase){
- $ext = preg_replace("/.*. ([^.]+)/","$1",$path);
- if($ext != 'csv'){
- $msg = 'CSV形式のファイルのみインポート可能';
- $flag = true;
- }
- }
-
- //ファイルサイズを検出
- if($flag === flase){
- if(filesize($path)>$maxsize){
- $msg = 'インポートされたファイルは超えてはなりません'.$maxsize . 'B file';
- $flag = true;
- }
- }
-
- //ファイルを読み込みます
- if($flag == flase){
- $row = 0;
- $handle = fopen($path,'r' );
- $dataArray = array();
- while($data = fgetcsv($handle,$max_column,",")){
- $num = count($data);
- if($num < $column) {
- $msg = 'ファイルが仕様を満たしていません。True: '.$num.' ;
- $flag = true;
- Break;
- }
-
- if($flag === flase){
- for($ i=0;$i<3;$i++){
- if($row == 0){
- Break;
- }
- //データを構築
- $dataArray[$row][$i] = $data [$i ];
- }
- }
- $row++;
- }
- }
-
- return $dataArray;
- }
- }
-
- $param_arr = array(
- 'nav'=>array('ユーザー名','パスワード' ,' メール'),
- array(0=>array('xiaohai1','123456','xiaohai1@zhongsou.com'),
- 1=>array('xiaohai2','213456','xiaohai2@ zhongsou.com'),
- 2=>array('xiaohai3','123456','xiaohai3@zhongsou.com')
- ));
-
- $column = 3;
- $csv = 新しい Csv($param_arr, $column );
- //$csv->export();
- $path = 'C:Documents and SettingsAdministratorLocal SettingsTemptxxx.csv';
- $import_arr = $csv->import($path,3);
- var_dump ($ import_arr);
-
- ?>
-
-
コードをコピー
|
CVS、php