php上传excel文件
⑴ php镐庝箞瀵煎嚭澶ч噺鏁版嵁镄凟xcel
php瀵煎嚭澶ч噺鏁版嵁鍒癊xcel锛屽彲浠ラ氲繃鐢熸垚澶氢釜Excel鏂囦欢锛岀劧钖庡帇缂╂垚铡嬬缉鍖呰В鍐炽
鏂规堟槸锛氩亣濡傛垜浠鏁版嵁搴撴湁10w𨱒℃暟鎹锛屾疮2000𨱒℃暟鎹鐢熸垚涓涓狤xcel鏂囦欢锛岃繖镙锋疮娆″彧瑕佷粠鏁版嵁搴挞噷镆ヨ㈠嚭2000𨱒℃暟鎹鍗冲彲锛屼竴瀹氲佸垎椤靛幓镆ヨ銆
铡熷洜锛氢富瑕佹槸鏁版嵁搴撴ц兘鍜屽啓鏂囦欢镐ц兘銆傚垎椤垫煡璇㈠彲浠ヨВ鍐虫暟鎹搴揿帇锷涚殑闂棰桡纴鐢熸垚澶氢釜鏂囦欢鍙浠ヨВ鍐冲崟涓鏂囦欢澶澶э纴钖庢湡缁存姢Excel鏂囦欢镄勯梾棰樸
瑕佹敞镒忕殑锛
1.鍦ㄥ煎嚭阃昏緫鏂囦欢寮澶达纴涓瀹氲佸0鏄set_time_limit(0)锛岄槻姝㈣剼链瓒呮椂锛
2.姣忎釜鏂囦欢鐢熸垚钖庯纴阃傚綋镄剆leep涓涓嬶纴璁╃▼搴忎紤鎭涓涓嬩笅锛
3.锲犱负涓娆″煎嚭链钖庤佸皢鐢熸垚镄勫氢釜Excel鏂囦欢镓揿寘鎴愪竴涓铡嬬缉鍖咃纴镓浠ヨ佸垹闄ゆ帀鐢熸垚镄凟xcel鏂囦欢锛岃妭鐪佹湇锷″櫒瀛桦偍绌洪棿锛
涓嬮溃鏄鎴戝疄闄呭伐浣滀腑锛屽啓镄勪竴涓猵hp瀵煎嚭澶ч噺鏁版嵁鍒癊xcel镄勪唬镰侊纴浣犲彲浠ュ弬钥冧竴涓嬶细
⑵ 如何通过PHP将excel的数据导入Mysql中
在开发PHP程序时,很多时候我们会有将数据批量导入数据库的需求,如学生信息批量添加到数据库中,而事先用excel编排好,对excel实行操作,便是我们比较常用的选择方式。
在对excel的操作中,phpExcelReade便是很多人的共同选择。在具体实现中,我们可以以文件上传方式将excel文件上传到服务器中的某个位置,通过以下操作将excel中的数据导入到数据库后,在将上传的文件删除即可。
代码如下:
$dir=dirname(__FILE__);//获取当前脚本的绝对路径
$dir=str_replace(“//”,”/”,$dir).”/”;
$filename=’uploadFile.xls';//可以定义一个上传后的文件名称
$result=move_uploaded_file($_FILES[‘upload’][‘tmp_name’],$dir.$filename);//假如上传到当前目录下
if($result)//如果上传文件成功,就执行导入excel操作
{
require_once‘phpExcelReader/Excel/reader.php';
$data=newSpreadsheet_Excel_Reader();
$data->setOutputEncoding(‘utf-8′);//设置在页面中输出的编码方式,而不是utf8
//该方法会自动判断上传的文件格式,不符合要求会显示错误提示信息(错误提示信息在该方法内部)。
$data->read(“$filename”);//读取上传到当前目录下名叫$filename的文件
error_reporting(E_ALL^E_NOTICE);
//如果excel表带标题,则从$i=2开始,去掉excel表中的标题部分(要将$i<=改为$i<否则会插入一条多余的空数据)
for($i=2;$i<$data->sheets[0][‘numRows’];$i++)
{
$sql=“INSERTINTOuser(stuid,class,name,sex,classNum,tel,addr,remark)VALUES(‘”.
$data->sheets[0][‘cells’][$i][1].”‘,'”.//学号
$data->sheets[0][‘cells’][$i][2].”‘,'”.//班级
$data->sheets[0][‘cells’][$i][3].”‘,'”.//姓名
$data->sheets[0][‘cells’][$i][4].”‘,'”.//性别
$data->sheets[0][‘cells’][$i][5].”‘,'”.//班内序号
$data->sheets[0][‘cells’][$i][6].”‘,'”.//联系电话
$data->sheets[0][‘cells’][$i][7].”‘,'”.//联系地址
$data->sheets[0][‘cells’][$i][8].”‘)”;//附注
$db->query($sql);
$insert_info.=”$sql</br>/n”;//可以用来显示数据插入的信息
}
$totalNums=$data->sheets[0][‘numRows’]-2;//求出导入的总数据条数(这里是减去2,才会得到去除标题后的总数据)
//echo“导入成功!”;
unlink(“$filename”);//删除上传的excel文件
}
else
{
$errmsg=”上传失败”;
}
⑶ 濡备綍鍒╃敤ThinkPHP妗嗘灦瀹炵幇Excel鏁版嵁瀵煎叆鍜屽煎嚭
瀹炵幇姝ラわ细
涓锛氩湪http://phpexcel.codeplex.com/涓嬭浇链鏂癙HPExcel鏀惧埌Vendor涓嬶纴娉ㄦ剰浣岖疆锛歍hinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php銆
浜岋细瀵煎嚭excel浠g爜瀹炵幇
/**鏂规硶**/
function index(){
$this->display();
}
public function exportExcel($expTitle,$expCellName,$expTableData){
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//鏂囦欢钖岖О
$fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 鏂囦欢钖岖О鍙镙规嵁镊宸辨儏鍐佃惧畾
$cellNum = count($expCellName);
$dataNum = count($expTableData);
vendor("PHPExcel.PHPExcel");
$objPHPExcel = new PHPExcel();
$cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//钖埚苟鍗曞厓镙
// $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s'));
for($i=0;$i<$cellNum;$i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
}
// Miscellaneous glyphs, UTF-8
for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
}
}
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");//attachment鏂扮獥鍙f墦鍗癷nline链绐楀彛镓揿嵃
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
/**
*
* 瀵煎嚭Excel
*/
function expUser(){//瀵煎嚭Excel
$xlsName = "User";
$xlsCell = array(
array('id','璐﹀彿搴忓垪'),
array('truename','钖嶅瓧'),
array('sex','镐у埆'),
array('res_id','闄㈢郴'),
array('sp_id','涓扑笟'),
array('class','鐝绾'),
array('year','姣曚笟镞堕棿'),
array('city','镓鍦ㄥ湴'),
array('company','鍗曚綅'),
array('cheng','镵岀О'),
array('wu','镵屽姟'),
array('jibie','绾у埆'),
array('tel','鐢佃瘽'),
array('qq','qq'),
array('email','闾绠'),
array('honor','钻h獕'),
array('remark','澶囨敞')
);
$xlsModel = M('Member');
$xlsData = $xlsModel->Field('id,truename,sex,res_id,sp_id,class,year,city,company,cheng,wu,jibie,tel,qq,email,honor,remark')->select();
foreach ($xlsData as $k => $v)
{
$xlsData[$k]['sex']=$v['sex']==1?'鐢':'濂';
}
$this->exportExcel($xlsName,$xlsCell,$xlsData);
}
澶嶅埗浠g爜
绗涓夛细瀵煎叆excel鏁版嵁浠g爜
function impUser(){
if (!empty($_FILES)) {
import("@.ORG.UploadFile");
$config=array(
'allowExts'=>array('xlsx','xls'),
'savePath'=>'./Public/upload/',
'saveRule'=>'time',
);
$upload = new UploadFile($config);
if (!$upload->upload()) {
$this->error($upload->getErrorMsg());
} else {
$info = $upload->getUploadFileInfo();
}
vendor("PHPExcel.PHPExcel");
$file_name=$info[0]['savepath'].$info[0]['savename'];
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($file_name,$encode='utf-8');
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 鍙栧缑镐昏屾暟
$highestColumn = $sheet->getHighestColumn(); // 鍙栧缑镐诲垪鏁
for($i=3;$i<=$highestRow;$i++)
{
$data['account']= $data['truename'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
$sex = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
// $data['res_id'] = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
$data['class'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
$data['year'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
$data['city']= $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
$data['company']= $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
$data['cheng']= $objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue();
$data['wu']= $objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue();
$data['jibie']= $objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue();
$data['honor']= $objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue();
$data['tel']= $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();
$data['qq']= $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();
$data['email']= $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();
$data['remark']= $objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue();
$data['sex']=$sex=='鐢'?1:0;
$data['res_id'] =1;
$data['last_login_time']=0;
$data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR'];
$data['login_count']=0;
$data['join']=0;
$data['avatar']='';
$data['password']=md5('123456');
M('Member')->add($data);
}
$this->success('瀵煎叆鎴愬姛锛');
}else
{
$this->error("璇烽夋嫨涓娄紶镄勬枃浠");
}
}
澶嶅埗浠g爜
锲涖佹ā𨱒夸唬镰
<html>
<head>
</head>
<body>
<P><a href="{:U('Index/expUser')}" >瀵煎嚭鏁版嵁骞剁敓鎴恊xcel</a></P><br/>
<form action="{:U('Index/impUser')}" method="post" enctype="multipart/form-data">
<input type="file" name="import"/>
<input type="hidden" name="table" value="tablename"/>
<input type="submit" value="瀵煎叆"/>
</form>
</body>
</html>
⑷ php通过finfo判断excel文件是什么格式
excel 93-2003后缀为 .xls 的 文件格式是 application/vnd.ms-excel
excel2007格式后缀是 .xlsx 的文件格式是application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
php上传文件,可以通过内置的系统函数$_FILES 获取文件的信息。
$_FILES数组内容如下: (其中upfile为获取的表单名称)
$_FILES['upfile']['name'] 客户端文件的原名称。
$_FILES['upfile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['upfile']['size'] 已上传文件的大小,单位为字节。
$_FILES['upfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名
<?php
if(isset($_POST['sub'])){
echo"文件名:".$_FILES['upfile']['name']."<br>";
echo"文件类型:".$_FILES['upfile']['type'];
}
?>
<formenctype="multipart/form-data"method="post"action="f.php">
<inputtype="file"name="upfile"/>
<inputtype="submit"name="sub"value="上传"/>
</form>
上传 。xls文件 返回的信息为
文件名:导入收藏证书模板.xls
文件类型:application/vnd.ms-excel
⑸ 如何用PHP做文件上传,和在网页上点击打开Word或Excel文件
<?php
if($submit && $testfile<> "none") {
$path="/home/httpd/html/"; //绝对路径,注意Linux和Windows下面的格式,windows格式为:c:\\apache2\\htdocs\ $filename=$testfile_name;
if (!@($testfile,$path.$filename)) {
echo "复制文件失败...<br>\n";
exit();
}
@unlink($testfile);
echo "文件上传成功!地址为:<a href=\"$filename\">下载</a>";
exit;
}
?>
<form action="<?php echo $PHP_SELF;?>" method="post" enctype="multipart/form-data">
<input name="testfile" type="file" size=20 enctype="multipart/form-data">
<input type=submit name=submit value="开始上传">
</form>