PHP implémente les fonctions d'importation et d'exportation de données au format CSV

墨辰丷
Libérer: 2023-03-30 10:08:01
original
2364 Les gens l'ont consulté

Cet article présente principalement comment PHP implémente la fonction d'importation et d'exportation de données au format CSV. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Nous préparons d'abord la table de données MySQL. Supposons que le projet ait une table student qui enregistre les informations sur l'étudiant, et qu'il dispose d'un identifiant, d'un nom, d'un sexe, d'un âge pour enregistrer respectivement le nom, le sexe, l'âge et d'autres informations de l'étudiant.

CREATE TABLE `student` ( 
 `id` int(11) NOT NULL auto_increment, 
 `name` varchar(50) NOT NULL, 
 `sex` varchar(10) NOT NULL, 
 `age` smallint(3) NOT NULL default '0', 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Copier après la connexion

Nous avons également besoin d'une page html interactive pour placer le formulaire d'importation et le bouton d'exportation.

<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" 
 class="btn" value="导入CSV"> 
 <input type="button" class="btn" value="导出CSV" onclick="window.location.href=&#39;do.php? 
 action=export&#39;"></p> 
</form>
Copier après la connexion

Après avoir sélectionné le fichier csv local, cliquez sur Importer et soumettez-le à do.php?action=import pour traitement, puis cliquez sur le bouton Exporter pour demander l'adresse do.php?action=export pour les données. traitement d'exportation.

1. Importer CSV
do.php doit gérer les processus d'importation et d'exportation séparément en fonction des paramètres obtenus :

include_once ("connect.php"); //连接数据库 
$action = $_GET[&#39;action&#39;]; 
if ($action == &#39;import&#39;) //导入CSV 
{ 
 //导入处理 
}elseif($action==&#39;export&#39;) //导出CSV 
{ 
 //导出处理 
}
Copier après la connexion

Flux de traitement d'importation CSV : Vérifier la légalité du fichier csv (ignoré dans cet article) ->Ouvrir les champs du fichier csv qui sont lus et analysés ->Boucler pour obtenir les valeurs de chaque champ - > Ajouter au tableau de données par lots ->

if ($action == &#39;import&#39;) { //导入CSV 
 $filename = $_FILES[&#39;file&#39;][&#39;tmp_name&#39;]; 
 if(emptyempty ($filename)) 
 { 
  echo &#39;请选择要导入的CSV文件!&#39;; 
  exit; 
 } 
 $handle = fopen($filename, &#39;r&#39;); 
 $result = input_csv($handle); //解析csv 
 $len_result = count($result); 
 if($len_result==0) 
 { 
  echo &#39;没有任何数据!&#39;; 
  exit; 
 } 
 for($i = 1; $i < $len_result; $i++) //循环获取各字段值 
 { 
  $name = iconv(&#39;gb2312&#39;, &#39;utf-8&#39;, $result[$i][0]); //中文转码 
  $sex = iconv(&#39;gb2312&#39;, &#39;utf-8&#39;, $result[$i][1]); 
  $age = $result[$i][2]; 
  $data_values .= "(&#39;$name&#39;,&#39;$sex&#39;,&#39;$age&#39;),"; 
 } 
 $data_values = substr($data_values,0,-1); //去掉最后一个逗号 
 fclose($handle); //关闭指针 
 $query = mysql_query("insert into student (name,sex,age) values $data_values"); //批量插入数据表中 
 if($query) 
 { 
  echo &#39;导入成功!&#39;; 
 }else{ 
  echo &#39;导入失败!&#39;; 
 } 
}
Copier après la connexion

Notez que la propre fonction fgetcsv de PHP peut facilement gérer le csv. Utilisez cette fonction pour lire une ligne à partir du pointeur de fichier et analyser le champ CSV. La fonction ci-dessous analyse les champs du fichier csv et les renvoie sous forme de tableau.

function input_csv($handle) 
{ 
 $out = array (); 
 $n = 0; 
 while ($data = fgetcsv($handle, 10000)) 
 { 
  $num = count($data); 
  for ($i = 0; $i < $num; $i++) 
  { 
   $out[$n][$i] = $data[$i]; 
  } 
  $n++; 
 } 
 return $out; 
}
Copier après la connexion

De plus, lors de l'importation dans la base de données, nous utilisons l'insertion par lots au lieu d'insérer un par un, donc lors de la construction de l'instruction SQL, nous devons faire un petit traitement, voir le code.

2. Exporter CSV
Nous savons que le fichier csv est un fichier texte brut composé de délimiteurs par virgules. Vous pouvez l'ouvrir avec Excel et l'effet est le même que celui du tableau xls.
Exporter le flux de traitement CSV : lire le tableau d'informations sur l'étudiant-> boucler les enregistrements pour construire des informations de champ séparées par des virgules-> définir les informations d'en-tête-> Pour exporter les données vers l'ordinateur local, vous devez modifier les informations d'en-tête. Le code est le suivant :

... 
}elseif ($action==&#39;export&#39;) //导出CSV 
{ 
 $result = mysql_query("select * from student order by id asc"); 
 $str = "姓名,性别,年龄\n"; 
 $str = iconv(&#39;utf-8&#39;,&#39;gb2312&#39;,$str); 
 while($row=mysql_fetch_array($result)) 
 { 
  $name = iconv(&#39;utf-8&#39;,&#39;gb2312&#39;,$row[&#39;name&#39;]); //中文转码 
  $sex = iconv(&#39;utf-8&#39;,&#39;gb2312&#39;,$row[&#39;sex&#39;]); 
  $str .= $name.",".$sex.",".$row[&#39;age&#39;]."\n"; //用引文逗号分开 
 } 
 $filename = date(&#39;Ymd&#39;).&#39;.csv&#39;; //设置文件名 
 export_csv($filename,$str); //导出 
}
Copier après la connexion

Résumé : Ce qui précède représente l'intégralité du contenu de cet article. tout le monde apprend.

function export_csv($filename,$data) 
{ 
 header("Content-type:text/csv"); 
 header("Content-Disposition:attachment;filename=".$filename); 
 header(&#39;Cache-Control:must-revalidate,post-check=0,pre-check=0&#39;); 
 header(&#39;Expires:0&#39;); 
 header(&#39;Pragma:public&#39;); 
 echo $data; 
}
Copier après la connexion
Recommandations associées :

Analyse des concepts et exemples d'utilisation de classes abstraites et de méthodes abstraites en PHP

Exemples d'héritage et d'utilisation de classes en PHP Explication détaillée

Comment PHP implémente la fonction d'affichage de pagination de données

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!