我們做網站的時候經常要用到excel導入和導出的功能,我們通常的做法是用phpexcel工具包來完成,具體方法如下:
html代碼:
<form action="{:U('Mall/updExcel')}" method="POST" enctype="multipart/form-data"> //提交form表單到Mall控制器下的upExcel方法中
<div >
<div >
<input type='submit' value="更改價格" />
</div>
<div >
<input type='file' value="" name="import"/>
</div>
<input type="hidden" id="url" name="url" value=""/> //添加一個隱藏域 傳遞url
</div>
</form>
寫ExcelController工具類:此類用來被實例化
<?php
namespace Home\Controller;
use Think\Controller;
include "./Public/Plugin/PHPExcel.class.php";
include "./Public/Plugin/PHPExcel/Writer/Excel5";
include "./Public/Plugin/PHPExcel/IOFactory.php";
class ExcelController extends Controller {
//導入功能
public function updExcel($file){
if(!file_exists($file)){
return array("error"=>0,'message'=>'file not found!');
}
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($file,$encode='utf-8');
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得總行數
$highestColumn = $sheet->getHighestColumn(); // 取得總列數
$j=0;
for($i=2;$i<=$highestRow;$i++){
$data[$j]['id']= $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();
$data[$j]['result_price']= $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
$j++;
}
return $data;
}
下面書寫控制器來上傳excel表格:此類方法不用把excel表格傳遞到服務器,直接寫入數據:
<?php
namespace Admin\Controller;
use Think\Controller;
use Think\Page;
use Home\Controller\IndexController;
use Common;
use Org\Util\Date;
use Home\Controller\ExcelController;
class MallController extends Controller {
/*商品列表批量導入*/
public function updExcel(){
$excel=new ExcelController();
$goods=M('shop_goods_subinfo');
if(isset($_FILES["import"]) && ($_FILES["import"]["error"] == 0)){
$result = $excel->updExcel($_FILES["import"]["tmp_name"]);
/*
* 業務邏輯代碼
* */
$true="";
$false="";
foreach($result as $value){
//$where=array('id'=>$value['id'],'status'=>0);
$where=array(
'code'=>$value['id'],
);
$data=array(
'result_price'=>$value['result_price'],
);
$state=$goods->where($where)->save($data);
if($state > 0){
$true .= ";".$value['id'];
}else{
$false .= ";".$value['id'];
}
}
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
echo "<script type='text/javascript'>";
echo "alert('更改成功".$true.";更改失敗".$false."');window.location.href='".I('param.url')."';";
echo "</script>";
exit;
}else{
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
echo "<script type='text/javascript'>";
echo "alert('文件讀取失敗');window.location.href='".I('param.url')."';";
echo "</script>";
exit;
}
}
}