<div class="pageContent">
<form enctype="multipart/form-data" method="post" action="{:U(GROUP_NAME.'/School/importHandle')}" class="pageForm required-validate" onsubmit="return iframeCallback(this,navTabAjaxDone);">
<div class="pageFormContent" layoutH="58">
<div class="unit">
<label>选择Excel文件:</label>
<input type="file" name="file_stu"/>
</div>
<span style="color: #0000FF;margin-left: 80px;">备注:可以上传Microsoft Excel 2003格式的文件(文件名为*.xls),文件大小小于1M。</span>
</div>
<div class="formBar">
<ul>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
</ul>
</div>
</form>
服务器上的处理代码://导入学校名单
public function import(){
$this->display();
}
//处理导入学校名单
public function importHandle(){
if (IS_POST){
import('ORG.Net.UploadFile');
$savePath='./data/school/';//上传目录
@chmod("$savePath",0777);//设置目录可写
$upload=new UploadFile();
$upload->maxSize=1000000;//上传附件大小,1M=1000000
$upload->allowExts=array('xls');//上传附件格式
$upload->savePath=$savePath;//上传目录,相对于单入口文件
$upload->saveRule='time';//上传文件命名规则
if($upload->upload()){
$info=$upload->getUploadFileInfo();
$file_name=$info[0]['savename'];//获取上传后的新文件名
}else{
echo json_encode(array(
'statusCode'=>'300',
'message'=>'文件上传失败',
'navTabId'=>'school',
'callbackType'=>'',
'forwardUrl'=>''
));
}
/*
*对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中
注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
*/
$res = $this->read ( $savePath . $file_name );
/*
重要代码 解决Thinkphp M、D方法不能调用的问题
如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码
*/
//spl_autoload_register ( array ('Think', 'autoload' ) );
/*对生成的数组进行数据库的写入*/
foreach ( $res as $k => $v )
{
if ($k != 0)
{
$data ['areaid'] = $v[0];
$data ['school'] = $v[1];
$data ['schoolid'] = $v[2];
$result = M ( 'School' )->add ( $data );
if (!$result)
{
echo json_encode(array(
'statusCode'=>'300',
'message'=>'导入数据库失败',
'navTabId'=>'school',
'callbackType'=>'',
'forwardUrl'=>''
));
}
}
}
echo json_encode(array(
'statusCode'=>'200',
'message'=>'操作成功,请关闭上传窗口',
'navTabId'=>'school',
'callbackType'=>'',
'forwardUrl'=>''
));
}
}
//读取excel表
public function read($filename,$encode='utf-8'){
vendor('Excel.PHPExcel');
$objReader = PHPExcel_IOFactory::createReader(Excel5);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for ($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex; $col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
return $excelData;
}
希望对大家有帮助,共同支持thinkphp发展,创造好的技术交流平台。 最佳答案
