最近在作一個小項目,就是一個管理信息的小系統;要求有導入和導出的信息爲excel的功能,研究過導入導出功能的確定知道導出要比導入的簡單多了,導入用的phpexcel,當時對phpexcel是徹底不瞭解的,因此研究了很長時間才研究出來了,中途也是出現了各類問題,好在最後結果是出來了;php
html頁面代碼:html
<form method="post" action="提交處理頁面" enctype="multipart/form-data">
<input type="hidden" name="leadExcel" value="true">
<strong class="icon-reorder">導入Excel表<input type="file" name="file_stu" />
<input type="submit" value="導入" style="position:relative;margin-left:-40px;margin-top:-10px"/> </strong>
</form>mysql
提交處理頁面代碼:sql
<?php
require("function.php");
$con=con('manage');//鏈接數據庫數據庫
//當上傳文件過多的時候,超過期間限制的時候,上傳文件會被終止,加上這一句是爲了取消時間限制;數組
set_time_limit (0);
if($_POST['leadExcel'] == "true")
{
$filename = $_FILES['file_stu']['name'];
$tmp_name = $_FILES['file_stu']['tmp_name'];
$msg = uploadFile($filename,$tmp_name);
echo $msg;
echo "<script>setTimeout('history.back()',3000)</script>";
}dom
//導入Excel文件
function uploadFile($file,$filetempname)
{
//本身設置的上傳文件存放路徑
$filePath = 'upFile/';
$str = "";
//下面的路徑按照你PHPExcel的路徑來修改
require_once './PHPExcel/Classes/PHPExcel.php';
require_once './PHPExcel/Classes/PHPExcel/IOFactory.php';
require_once './PHPExcel/Classes/PHPExcel/Reader/Excel5.php';ide
//注意設置時區
$time=date("ymdHis");//去當前上傳的時間
//獲取上傳文件的擴展名
$extend=strrchr ($file,'.');函數
//判斷格式是否爲excel格式
if($extend !=".xls"){
echo "<script>alert('您上傳的格式不正確');history.back();</script>";
exit();
}
//上傳後的文件名
$name=$time.$extend;
$uploadfile=$filePath.$name;//上傳後的文件名地址
//move_uploaded_file() 函數將上傳的文件移動到新位置。若成功,則返回 true,不然返回 false。
$result=move_uploaded_file($filetempname,$uploadfile);//假如上傳到當前目錄下post
if($result) //若是上傳文件成功,就執行導入excel操做
{
$excelpath = $uploadfile;
setlocale(LC_ALL, 'zh_CN'); //導入數據庫防止中文亂碼
$fileType = PHPExcel_IOFactory::identify($excelpath);
$objReader = PHPExcel_IOFactory::createReader($fileType);
//這兩句也是防止導入的時候亂碼的
$objReader->setInputEncoding('GBK');
$objReader->setDelimiter(',');
$objPHPExcel = $objReader->load($excelpath);
$Sheet = $objPHPExcel->getActiveSheet();
$highestRow = $Sheet->getHighestRow();//取得總行數
$highestColumn = $Sheet->getHighestColumn();//取得總列數
//爲何有這個數組呢,由於我打印總行列的時候只能打印一列
$arr = array(1=>'A',2=>'B',3=>'C',4=>'D',5=>'E',6=>'F',7=>'G',8=>'H',9=>'I',10=>'J',11=>'K',12=>'L',13=>'M', 14=>'N',15=>'O',16=>'P',17=>'Q',18=>'R',19=>'S',20=>'T',21=>'U',22=>'V',23=>'W',24=>'X',25=>'Y',26=>'Z');
$headtitle=array();
for ($row = 2;$row <= $highestRow;$row++)
{
$strs=array();
for ($col = 0;$arr[$col] != 'F';$col++)
{
$strs[$col] =$Sheet->getCellByColumnAndRow($col, $row)->getValue();
}
$data=explode(" ", $strs[0]); $con=con('manage'); $sql="INSERT INTO `data`(`id`,`domain`,`regtime`,`expiretime`,`cid`) VALUES('".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."','".$data[4]."')"; $re=mysqli_query($con,$sql); if(!$re) { return false; echo 'sql語句有誤'; }else{ $msg = "導入成功"; } } } else { $msg = "導入失敗!"; } return $msg;} ?>