ThinkPHP+uploadify+upload+PHPExcelによるインポートデータのリフレッシュなし
5147 ワード
くだらない话は多く言わないで、直接みんなにコードを贴って、コードは注釈をつけて、みんながすべて理解することができることを信じて、分からない地方があって私に伝言を歓迎します.
フロントエンドHTML+JQuery備考Jqueryは1.xバージョン、2は使用できません.xバージョン
1.必要なファイルの導入とinputのアップロード
2.uploadify使用操作
3、ThinkPHPコントローラのアップロード操作:注記Uploadを導入する必要がある.class.php空間
4.データをインポートmysql
5.PHPExcel Excelファイルを読み込みデータ関数を返す
以上のコードによりThinkPHP+uploadify+upload+PHPExcel無リフレッシュインポートデータを実現しましたので、ご協力をお願いします.
フロントエンドHTML+JQuery備考Jqueryは1.xバージョン、2は使用できません.xバージョン
1.必要なファイルの導入とinputのアップロード
2.uploadify使用操作
$(function(){
//ThinkPHP
var upload = "{:U(MODULE_NAME.'/Student/upload')}";
//ThinkPHP sessionID
//'VAR_SESSION_ID'=>'session_id', ThinkPHP/Conf/convention.php ,
var sid = '{:session_id()}';
//
var daoruUrl = "{:U(MODULE_NAME.'/Student/daoruHandle')}"
//Amaze ui
var modal = $('#my-modal-loading');
//uploadify
$('#student').uploadify({
'swf' : '__PUBLIC__/uploadify/uploadify.swf',
'uploader' : upload,
'buttonText' : ' ...',
'width':120,
'height':30,
'formData':{'session_id':sid},
'fileTypeExts':'*.xls',
//
'onUploadStart' : function(file) {
$('#alert-content').html(' ');
modal.modal();
},
// ,
'onUploadSuccess':function(file, data, response){
$('#alert-content').html(' ');
data = eval("("+data+")");
$.ajax({
type: 'POST',
url: daoruUrl,
data: {'file':data.file},
success: function(retdata){
modal.modal('close');
if(retdata==1){
alert(' ');
}else{
alert(' ');
}
},
dataType: 'json'
});
}
});
});
3、ThinkPHPコントローラのアップロード操作:注記Uploadを導入する必要がある.class.php空間
function upload(){
$config = array(
'maxSize' => 3145728,
'rootPath' => './Uploads/',
'savePath' => '',
'saveName' => array('uniqid',''),
'exts' => array('xls'),
'autoSub' => true,
'subName' => array('date','Ymd'),
);
$upload = new Upload($config);
//
$info = $upload->upload();
if(!$info) {//
$this->error($upload->getError());
}else{//
$file = $info['Filedata']['savepath'].$info['Filedata']['savename'];
}
//p($info);
$data = array(
'file'=>'./Uploads/'.$file,
);
echo json_encode($data);
}
4.データをインポートmysql
//
function daoruHandle(){
$file = I('file');
$excelData = excel_to_mysql($file);
foreach($excelData['data'] as $row){
$data = array(
'xuehao'=>$row['xuehao'],
'xingming'=>$row['xingming'],
'xingbie'=>($row['xingbie']==' ')?1:0,
'mima'=>md5($row['mima']),
);
M('student')->add($data);
}
echo 1;
}
5.PHPExcel Excelファイルを読み込みデータ関数を返す
function excel_to_mysql($file){
// PHPExcel
//vendor('PHPExcel.PHPExcel');
import('Classes.PHPExcel',COMMON_PATH,'.php');
// PHPExcel , Excel
$PHPExcel = new PHPExcel();
// Excel
$PHPReader = new PHPExcel_reader_Excel5();
// Excel
if(!$PHPReader->canRead($file)){
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($file)) return array('error'=>1);// Excel
}
// Excel
$PHPExcel = $PHPReader->load($file);
// Excel
$sheetCount = $PHPExcel->getSheetCount();
//
$sheet=$PHPExcel->getSheet(0);
//
$column = $sheet->getHighestColumn();
//
$row = $sheet->getHighestRow();
//
for($i=1;$i<=$row;$i++){
$data[] = array(
// getCell getValue
'xuehao'=>$sheet->getCell('A'.$i)->getValue(),
'xingming'=>$sheet->getCell('B'.$i)->getValue(),
'xingbie'=>$sheet->getCell('C'.$i)->getValue(),
'mima'=>$sheet->getCell('D'.$i)->getValue(),
);
}
//
unset($sheet);
// Excel
unset($PHPReader);
// Excel
unset($PHPExcel);
//
return array('error'=>0,'data'=>$data);
}
以上のコードによりThinkPHP+uploadify+upload+PHPExcel無リフレッシュインポートデータを実現しましたので、ご協力をお願いします.