1.将phpexcel作为第三方类库放入到TP框架当中如下的位置:
2.首先是excel导入数据库的操作,首先在页面上添加一个导入文件的按钮,
<form method='post'action='/Admin/User/uploadExcelFile/' enctype='multipart/form-data' style='float:left'><input type='submit' value='导入' style='float:left;'/><input type='file' name='file_stu' style='float:left;font-size: 16px' /></form>
3.在控制器里面进行操作
这个是项目中的具体代码。
1)首先引入phpexcel.
2) 上传excel文件。
代码:
//Upload Excel File 导入数据库
public function uploadExcelFile (){
require(THINK_PATH.'Library/Vendor/PHPExcels/PHPExcel.php');//引入PHP EXCEL类
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('xls', 'xlsx');// 设置附件上传类型
$upload->rootPath = 'Public/UploadsExcel/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
$upload->saveRule = uniqid;
// 上传文件
$info = $upload->upload($_FILES);
/*判别是不是.xls文件,判别是不是excel文件*/
if($info){
$filePath = 'Public/'.'UploadsExcel/'.$info['file_stu']['savepath'].$info['file_stu']['savename'];//Excel文件路径
$sheet = 0;//默认表格
if(empty($filePath) or !file_exists($filePath)){die('file not exists');}
$PHPReader = new \PHPExcel_Reader_Excel2007(); //建立reader对象
if(!$PHPReader->canRead($filePath)){
$PHPReader = new \PHPExcel_Reader_Excel5();
if(!$PHPReader->canRead($filePath)){
echo 'no Excel';
return ;
}
}
$PHPExcel = $PHPReader->load($filePath); //建立excel对象
$currentSheet = $PHPExcel->getSheet($sheet); //**读取excel文件中的指定工作表*/
$allColumn = $currentSheet->getHighestColumn(); //**取得最大的列号*/
$allRow = $currentSheet->getHighestRow(); //**取得一共有多少行*/
$excelData = array();
for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){ //循环读取每个单元格的内容。注意行从1开始,列从A开始
for($colIndex='A';$colIndex<=$allColumn;$colIndex++){
$addr = $colIndex.$rowIndex;
$cell = $currentSheet->getCell($addr)->getValue();
if($cell instanceof \PHPExcel_RichText){ //富文本转换字符串
$cell = $cell->__toString();
}
$excelData[$rowIndex][$colIndex] = $cell;
}
}
$invitationcodeModel = M('maiclub_invitationcode');
foreach($excelData as $v ){
$data['invitation_code'] = $v['B'];
$data['id'] = null;
$data['status'] = 0;
$data['create_time'] = time();
$result = $invitationcodeModel->data($data)->add();
$insertId = $result;
}
if($insertId){
echo "<script>alert('插入成功');location.href='/Admin/User/invitationLists';</script>";
}else{
echo "<script>alert('插入失败,请检查文件是否按照要求的格式');</script>";
}
}else{
echo "<script>alert('上传失败');location.href='/Admin/User/invitationLists';</script>";exit;
}
}
3.excel的导出
代码:
//导出Excel文件
public function excelExport(){
require_once(THINK_PATH.'Library/Vendor/PHPExcels/PHPExcel.php');//引入PHP EXCEL类
require_once(THINK_PATH.'Library/Vendor/PHPExcels/IOFactory.php');//引入PHP EXCEL类
$objPHPExcel = new \PHPExcel();
$invitationcodeModel = M('maiclub_invitationcode');
$invitationcodeList=$invitationcodeModel->select();
//设置excel列名
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1','id');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1','invitation_code');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C1','status');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D1','create_time');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E1','modify_time');
//把数据循环写入excel中
foreach($invitationcodeList as $key => $value){
$key+=2;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$key,$value['id']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$key,$value['invitation_code']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$key,$value['status']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D'.$key,date('Y-m-d H:i:s',$value['create_time']));
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E'.$key,date('Y-m-d H:i:s',$value['modify_time']));
}
// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle('邀请码');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="邀请码列表.xls"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}