一般導入導出文件格式都爲 Excel , 最近項目需要 , 涉及到 CSV格式的文件導入 , 直接上代碼看一下:
一:簡單的設置個form表單按鈕:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>導入CSV文件人員信息</title>
</head>
<body>
<form action="<?php echo site_uri('Portal/Home/synchro_yiqi_account')?>" method="post" enctype="multipart/form-data">
<p>請選擇要導入的CSV文件:<br/><br/>
<input type="file" name="file">
<input type="submit" class="btn" value="導入CSV">
</form>
</body>
</html>
注意:(1)一定不要忘記 enctype 的部分。
對應的解釋:
不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。
(2)action 要設置正確
二:PHP操作
function synchro_yiqi_account(){
$filename = $_FILES['file']['tmp_name'];
if(empty($filename)){
echo '請選擇要導入的CSV文件';
exit();
}
$handle = fopen($filename, 'r');
$result = $this->input_csv($handle);
$len_result = count($result);
if($len_result == 0){
echo '沒有任何數據';
exit();
}
for ($i=0; $i < $len_result; $i++) {
$username = $result[$i][0];
$password = '3ZC1dO0t6XZnXtDO';
$dept_id = 1;//部門
$firstname = $result[$i][1];
$email = $result[$i][2];
$registration_date = date('Y-m-d H:i:s');
$nickname = $result[$i][0];
$data_values .= "('$username','$password','$dept_id','$firstname','$email','$registration_date','$nickname'),";
}
$data_values = substr($data_values,0,-1); //去掉最後一個逗號
fclose($handle);
$db = new Db_Pdo('DB_HOST', 'DB_PORT', 'DB_NAME', 'DB_USER', 'DB_PWD');//數據庫設置
$sql = "INSERT INTO `account` (`username`,`password`,`dept_id`,`firstname`,`email`,`registration_date`,`nickname`) VALUES $data_values";
$query = $db->query($sql);
if($query){
echo '導入成功';
}else{
echo '導入失敗';
}
}
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;
}
操作使用的Pdo類庫見:http://download.csdn.net/detail/for_my_own_voice/9643224
至此 , 點擊一下按鈕 , 成功!