ホームページ > バックエンド開発 > PHPチュートリアル > PHP は CSV ファイルをエクスポートします。エンコーディング エクスポートと CSV ファイルのインポートおよびエクスポート クラスを指定します。

PHP は CSV ファイルをエクスポートします。エンコーディング エクスポートと CSV ファイルのインポートおよびエクスポート クラスを指定します。

WBOY
リリース: 2016-07-25 08:51:24
オリジナル
1516 人が閲覧しました
  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. * 次のヘッダーは、データを export.csv という CSV ファイルとして扱うようにブラウザーに指示します
  21. */
  22. header('Content-Type: text/csv; charset=cp1252');
  23. header('Content-Disposition:attachment;filename=output.csv');
  24. /*
  25. * 出力ヘッダー行 (少なくとも場合) 1 行が存在します)
  26. */
  27. $row = mysql_fetch_assoc($result);
  28. if ($row) {
  29. echocsv(array_keys($row));
  30. }
  31. /*
  32. * データ行を出力します (少なくとも 1 行が存在する場合)
  33. */ 导出力csv文件
  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. ?>
复制代码

2. CSV ファイルをインポートおよびエクスポートするための PHP クラス

php は、csv ファイルのインポートおよびエクスポート クラスを実装します。 コード:

    /**
  1. *CSVファイル処理クラス
  2. */
  3. class Csv{
  4. public $csv_array; //csv 配列データ
  5. public $csv_str; public function __construct($param_arr; , $column){
  6. $this->csv_array = $param_arr;
  7. $this->path = $path;
  8. $this->column = $column;
  9. }
  10. /**
  11. * エクスポート
  12. **/
  13. public function export(){
  14. if(empty($this->csv_array) || empty($this->column)){
  15. return false;
  16. }
  17. $param_arr = $this->csv_array;
  18. unset ($this->csv_array);
  19. $export_str = implode(',',$param_arr['nav'])."n";
  20. unset($param_arr['nav']);
  21. //データを組み立てる
  22. foreach($param_arr as $k=>$v){
  23. foreach($v as $k1=>$v1){
  24. $export_str .= implode(',',$v1)."n";
  25. }
  26. }
  27. //エクスポート $export_str
  28. header( "Cache-Control: public" );
  29. header( "Pragma: public" );
  30. header("Content-type:application/vnd.ms-excel");
  31. header ("Content-Disposition:attachment;filename=txxx.csv");
  32. header('Content-Type:APPLICATION/OCTET-STREAM');
  33. ob_start()
  34. // $file_str= iconv("utf-8 " ,'gbk',$export_str);
  35. ob_end_clean();
  36. echo $export_str;
  37. }
  38. /**
  39. * インポート
  40. **/
  41. public function import($path,$column = 3){
  42. $flag = flase ;
  43. $code = 0;
  44. $msg = '未処理';
  45. $filesize = 1; //1MB
  46. $maxsize = $filesize * 1024 * 1024;
  47. $max_column = 1000;
  48. //ファイルが存在するかどうかを検出します
  49. if($flag === flase){
  50. if(!file_exists($path)){
  51. $msg = 'ファイルが存在しません';
  52. $flag = true;
  53. }
  54. }
  55. //ファイル形式を検出
  56. if ($flag === flase){
  57. $ext = preg_replace("/.*.([^.]+)/","$1",$path);
  58. if($ext != 'csv'){
  59. $msg = 'CSV形式ファイルのみインポート可能';
  60. $flag = true;
  61. }
  62. }
  63. //ファイルサイズを検出
  64. if($flag === flase){
  65. if(filesize($path)> ; $maxsize){
  66. $msg = 'インポートされるファイルは'.$maxsize.'B fileを超えてはなりません';
  67. $flag = true;
  68. }
  69. }
  70. //ファイルを読み込みます
  71. if($flag == flase ){
  72. $row = 0;
  73. $handle = fopen($path,'r');
  74. $dataArray = array();
  75. while($data = fgetcsv($handle,$max_column,",")){
  76. $ num = count($data);
  77. if($num < $column){
  78. $msg = 'ファイルは仕様を満たしておらず、実際には '.$num.' 列データが含まれています';
  79. $flag = true;
  80. ブレーク
  81. }
  82. if($flag === flase){
  83. for($i=0;$i<3;$i++){
  84. if($row == 0){
  85. ブレーク;
  86. }
  87. //データを構築します
  88. $dataArray[$row][$i] = $data[$i];
  89. }
  90. }
  91. $row++;
  92. }
  93. }
  94. return $dataArray;
  95. }
  96. }
  97. $param_arr = array(
  98. 'nav' =>array('username','password','email'),
  99. array(0=>array('xiaohai1','123456','xiaohai1@jbxue.com'),
  100. 1=> 配列('xiaohai2','213456','xiaohai2@jbxue.com'),
  101. 2=>配列('xiaohai3','123456','xiaohai3@jbxue.com')
  102. )) ;
  103. $column = 3;
  104. $csv = 新しい Csv($param_arr, $column);
  105. //$csv->export();
  106. $path = 'C:Documents and SettingsAdministratorTemptxxx.csv';
  107. $import_arr = $csv-> ;import($path,3);
  108. var_dump($import_arr);
  109. ?>
  110. コードをコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート