Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert die Import- und Exportfunktionen von Daten im CSV-Format

PHP implementiert die Import- und Exportfunktionen von Daten im CSV-Format

墨辰丷
墨辰丷Original
2018-06-06 17:00:592389Durchsuche

In diesem Artikel wird hauptsächlich vorgestellt, wie PHP die Import- und Exportfunktionen von Daten im CSV-Format implementiert. Ich hoffe, dass er für alle hilfreich ist.

Wir bereiten zunächst die MySQL-Datentabelle vor. Gehen wir davon aus, dass das Projekt über eine Tabelle „Schüler“ verfügt, in der die Informationen des Schülers aufgezeichnet werden, und dass die ID, der Name, das Geschlecht und das Alter des Schülers entsprechend aufgezeichnet werden.

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;

Wir benötigen außerdem eine interaktive HTML-Seite, um das Importformular und die Exportschaltfläche zu platzieren.

<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>

Nachdem Sie die lokale CSV-Datei ausgewählt haben, klicken Sie auf „Importieren“ und senden Sie sie zur Verarbeitung an do.php?action=import. Klicken Sie dann auf die Schaltfläche „Exportieren“, um die Adresse do.php?action=export für die Datenexportverarbeitung anzufordern .

1. CSV importieren
do.php muss die Import- und Exportprozesse entsprechend den erhaltenen Parametern separat verarbeiten. Die PHP-Struktur ist wie folgt:

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

CSV-Verarbeitungsprozess importieren: Überprüfen Sie die Rechtmäßigkeit der CSV-Datei (in diesem Artikel ignoriert) ->Öffnen Sie die Felder in der CSV-Datei, die gelesen und analysiert werden ->Schleife, um die Werte jedes Felds zu erhalten -> Stapelweise zur Datentabelle hinzufügen –>Vollständig.

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;; 
 } 
}

Beachten Sie, dass die PHP-eigene Funktion fgetcsv CSV problemlos verarbeiten kann. Verwenden Sie diese Funktion, um eine Zeile aus dem Dateizeiger zu lesen und das CSV-Feld zu analysieren. Die folgende Funktion analysiert die Felder der CSV-Datei und gibt sie als Array zurück.

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; 
}

Außerdem verwenden wir beim Importieren in die Datenbank die Stapeleinfügung, anstatt sie einzeln einzufügen. Daher müssen wir beim Erstellen der SQL-Anweisung eine kleine Verarbeitung durchführen, siehe Code.

2. CSV exportieren
Wir wissen, dass die CSV-Datei eine reine Textdatei ist, die aus Komma-Trennzeichen besteht. Sie können sie mit Excel öffnen und der Effekt ist der gleiche wie bei der XLS-Tabelle.
CSV-Verarbeitungsablauf: Schülerinformationstabelle lesen – > Schleifendatensätze zum Erstellen kommagetrennter Feldinformationen – > Beim Exportieren nach lokal und Herunterladen müssen Sie die Header-Informationen ändern. Der Code lautet wie folgt:

... 
}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); //导出 
}

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich ist.

Verwandte Empfehlungen:

Analyse von Konzepten und Anwendungsbeispielen abstrakter Klassen und abstrakter Methoden in PHP

Beispiele für die Vererbung und Verwendung von Klassen in PHP Detaillierte Erklärung

Wie PHP die Anzeigefunktion für Datenseiten implementiert

Das obige ist der detaillierte Inhalt vonPHP implementiert die Import- und Exportfunktionen von Daten im CSV-Format. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn