PHP の CSV ファイルのインポートとエクスポートの詳細な説明、_PHP チュートリアル
Jul 13, 2016 am 10:15 AM
csv
php
輸入
輸出
PHPでのCSVファイルのインポートとエクスポートの詳細な説明
まず、プロジェクトに学生の情報を記録するテーブルstudentがあり、学生の名前、性別、年齢、その他の情報をそれぞれ記録するためのid、名前、性別、年齢があるとします。
コードをコピーします コードは次のとおりです:
テーブル「学生」を作成します (
`id` int(11) NOT NULL auto_increment、
`name` varchar(50) NOT NULL、
`sex` varchar(10) NOT NULL、
`age` smallint(3) NOT NULL デフォルト '0'、
主キー (`id`)
) エンジン=MyISAM デフォルト文字セット=utf8;
コードをコピーします コードは次のとおりです:
<form id="addform" action="do.php?action=import" method="post" enctype="multipart/form-data">
<p>インポートする CSV ファイルを選択してください:<br/><input type="file" name="file"<input type="submit"
クラス="btn" 値="CSV をインポート"> <input type="button" class="btn" value="CSV をエクスポート" onclick="window.location.href='do.php?
Action=export'"></p>
</フォーム>
ローカル CSV ファイルを選択した後、[インポート] をクリックして処理のために do.php?action=import に送信し、[エクスポート] ボタンをクリックしてデータ エクスポート処理のためにアドレス do.php?action=export を要求します。
1.CSVインポート
do.php は、取得したパラメータに従ってインポートとエクスポートのプロセスをそれぞれ処理する必要があります。PHP の構造は次のとおりです。
クラス="btn" 値="CSV をインポート"> <input type="button" class="btn" value="CSV をエクスポート" onclick="window.location.href='do.php?
Action=export'"></p>
</フォーム>
ローカル CSV ファイルを選択した後、[インポート] をクリックして処理のために do.php?action=import に送信し、[エクスポート] ボタンをクリックしてデータ エクスポート処理のためにアドレス do.php?action=export を要求します。
コードをコピーします
コードは次のとおりです:
include_once ("connect.php") // データベースに接続します
$アクション = $_GET['アクション']
if ($action == 'import') //CSVをインポート
{
//インポート処理
}elseif($action=='export') //CSV をエクスポート
{
//エクスポート処理
}
CSV インポート処理プロセス: CSV ファイルの正当性を確認します (この記事では無視します) -> 読み込みを開いて CSV ファイル内のフィールドを解析します -> ループして各フィールドの値を取得します -> 追加バッチでデータテーブルに追加 -> Complete 。
}elseif($action=='export') //CSV をエクスポート
{
//エクスポート処理
}
CSV インポート処理プロセス: CSV ファイルの正当性を確認します (この記事では無視します) -> 読み込みを開いて CSV ファイル内のフィールドを解析します -> ループして各フィールドの値を取得します -> 追加バッチでデータテーブルに追加 -> Complete 。
コードをコピーします
コードは次のとおりです:
if ($action == 'import') { //CSV をインポート
$filename = $_FILES['file']['tmp_name']; If(空の空 ($filename))
{
echo 'インポートする CSV ファイルを選択してください! ';
出る
}
$ハンドル = fopen($ファイル名, 'r'); $result = input_csv($handle); // csv を解析します
$len_result = カウント($result); If($len_result==0)
{
エコー「データがありません!」 ';
出る
}
for($i = 1; $i < $len_result; $i++) //各フィールドの値を取得するループ
{
$name = iconv('gb2312', 'utf-8', $result[$i][0]); //中国語のトランスコーディング
$sex = iconv('gb2312', 'utf-8', $result[$i][1]); $age = $result[$i][2]; $data_values .= "('$name','$sex','$age'),"
}
$data_values = substr($data_values,0,-1) //最後のカンマを削除します
; fclose($handle); // ポインタを閉じる
$query = mysql_query("学生 (名前,性別,年齢) の値に挿入 $data_values") // データ テーブルにバッチ挿入
If($クエリ)
{
echo 'インポート成功! ';
}その他{
echo 'インポートに失敗しました! ';
}
}
php 独自の fgetcsv 関数は、csv を簡単に処理できることに注意してください。この関数を使用して、ファイル ポインターから行を読み取り、CSV フィールドを解析します。以下の関数は、csv ファイルのフィールドを解析し、配列として返します。
コードをコピーします
コードは次のとおりです:
関数 input_csv($handle)
{
$out = 配列 ();
$n = 0;
while ($data = fgetcsv($handle, 10000))
{
$num = count($data);
for ($i = 0; $i
$out[$n][$i] = $data[$i];
$n++;
}
$out を返します。 }
さらに、データベースにインポートするときは、1つずつ挿入するのではなくバッチ挿入を使用するため、SQLステートメントを構築するときに少し処理を行う必要があります。コードを参照してください。
2.CSVをエクスポートする
csv ファイルはカンマ区切りで構成されるプレーン テキスト ファイルであり、Excel で開くことができ、その効果は xls テーブルと同じであることがわかります。
CSV のエクスポート処理フロー: 学生情報テーブルを読み取る -> レコードをループしてカンマ区切りのフィールド情報を構築 -> ヘッダー情報を設定 -> ローカルにファイルをエクスポート (ダウンロード)
コードをコピーします
コードは次のとおりです:$out を返します。 }
さらに、データベースにインポートするときは、1つずつ挿入するのではなくバッチ挿入を使用するため、SQLステートメントを構築するときに少し処理を行う必要があります。コードを参照してください。
2.CSVをエクスポートする
csv ファイルはカンマ区切りで構成されるプレーン テキスト ファイルであり、Excel で開くことができ、その効果は xls テーブルと同じであることがわかります。
CSV のエクスポート処理フロー: 学生情報テーブルを読み取る -> レコードをループしてカンマ区切りのフィールド情報を構築 -> ヘッダー情報を設定 -> ローカルにファイルをエクスポート (ダウンロード)
コードをコピーします
...
}elseif ($action=='export') //CSV をエクスポート
{
$result = mysql_query("select * from Student order by id asc"); $str = "名前、性別、年齢 n"; $str = iconv('utf-8','gb2312',$str); While($row=mysql_fetch_array($result))
{
$name = iconv('utf-8','gb2312',$row['name']); //中国語のトランスコーディング
$sex = iconv('utf-8','gb2312',$row['sex']); $str .= $name.",".$sex.",".$row['age']."n" //引用符で区切る
; }
$filename = date('Ymd').'.csv' //ファイル名を設定します
; import_csv($filename,$str); //エクスポート
}
データをローカル コンピューターにエクスポートするには、コードを次のように変更する必要があります:
コードは次のとおりです:
関数export_csv($filename,$data)
{
header("コンテンツタイプ:text/csv");
header("Content-Disposition:attachment;filename=".$filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('有効期限:0');
header('プラグマ:パブリック');
$data をエコーします。
}インポートとエクスポートのプロセスに注意してください。統一された UTF-8 エンコーディングを使用しているため、中国語の文字が見つかった場合は必ずトランスコードする必要があります。そうしないと、中国語の文字化けが発生する可能性があります。
さて、この記事はここまでです。PHP と mysql を組み合わせて Excel をインポートおよびエクスポートする方法と、XML のインポートおよびエクスポートについては、後ほど別の記事で説明する予定ですので、楽しみにしていてください。
true
http://www.bkjia.com/PHPjc/904933.html技術記事
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7298
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29



Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
