Ⅰ 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將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/下載最新PHPExcel放到Vendor下,注意位置:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。
二:導出excel代碼實現
/**方法**/
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新窗口列印inline本窗口列印
$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','榮譽'),
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);
}
復制代碼
第三:導入excel數據代碼
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("請選擇上傳的文件");
}
}
復制代碼
四、模板代碼
<html>
<head>
</head>
<body>
<P><a href="{:U('Index/expUser')}" >導出數據並生成excel</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、thinkphp中怎麼導入excel中的數據,放到mysql中去,比如,有5個欄位,求解釋…………謝謝…………
使用PHPexcel,你自己到網上搜這個插件吧,將需要的文件解壓到Classes目錄下,那麼把這個目錄放在框架thinkphp/extend/vendor/下面,我將自己項目中的部分代碼給你看看
在ACTION中設置上傳文件並獲取文件:
import('ORG.Net.UploadFile');
$upload = new UploadFile();// 實例化上傳類
$upload->maxSize = 3145728;// 設置附件上傳大小
$upload->allowExts = array('xls');// 設置附件上傳類型
$upload->savePath = './Uploads/';// 設置附件上傳目錄
if(!$upload->upload()) {// 上傳錯誤提示錯誤信息
$this->error($upload->getErrorMsg());
}else{// 上傳成功 獲取上傳文件信息
$info = $upload->getUploadFileInfo();
}
$filetmpname = './Uploads/'.$info[0]['savename'];
下面就需要使用phpexcel來解析
Vendor('Classes.PHPExcel');
$objPHPExcel = PHPExcel_IOFactory::load($filetmpname);
$excelarray= $objPHPExcel->getSheet(0)->toArray();
unlink($filetmpname);//刪除上傳的文件
//你要注意,excel表中如果從第一行的數據開始導入,那麼直接按照下面的代碼就可以,如果有表頭之類的不需要的行,那麼就是用 array_shift先刪除數組中不需要的行
//循環給數據欄位賦值
foreach($excelarr as $k=>$v){
$data[$k]['欄位1']=$v[1];
$data[$k]['欄位2']=$v[2];
$data[$k]['欄位3']=$v[3];
$data[$k]['欄位4']=$v[4];
$data[$k]['欄位5']=$v[5];
}
上面的步驟就是獲取了表格中的數據並賦值給了數組,下面就可以直接插入到資料庫中了
$list=$charu=D('數據表名')->addAll($data);
非常簡單吧,至於數據中的類型和驗證等,自己在需要的位置設定就可以了
Ⅳ php+excel通用成績查詢系統+v6.8+sae怎麼使用
PHP+excel通用成績查詢系統是個極為簡單卻非常通用、非常方便的成績查詢系統,通用於幾乎所有Excel單二維數據表查詢。只需修改 查詢條件和頂部、底部文字(非常簡單),即可用於幾乎所有工資等查詢,成績查詢,物業查詢,收電費查詢,錄取查詢,證書查詢等場景哦。
使用的是PHPexcel查詢Excel,測試可用,可能速度偏慢(千條數據無影響)
直接查詢Excel數據的第一個表,修改表格後FTP上傳,快速搞定,非常方便。
當然linux可能xls文件可以倍下載,如果保密數據,請做防下載處理哦。
sae直接上傳代碼包即可和演示一樣的效果,讓你可以免費實現查詢系統
(免費代碼+免費二級域名+免費sae空間)
其他linux PHP環境,如果亂碼請用utf-8字元集上傳。
1.非常通用。無論你Excel/Wps二維表幾列,列標題各是什麼,直接支持。其他格式導出為csv或excel後同樣支持。查詢結果幾乎都由你Excel二維表控制,平時只需維護好你的Excel表,而操作Excel,幾乎每台電腦都有軟體可以打開編輯,幾乎誰都會操作。
2.使用簡單。只需修改查詢條件和標題,然後把你平時輸入的excel二維表進行:復制,粘貼,更名,上傳,特別方便,發布一次成績查詢,半分鍾內可以解決。修改查詢查詢條件等,記事本打開編輯幾個字即可,自定義是否使用驗證碼。
3.市場廣泛。可以廣泛用於一次性出來的改動很少的成績查詢,錄取查詢,證書查詢系統(每個學校,教育機構,事業單位考試等都可以用到),工資查詢系統(每個企業,學校,所有單位都可能用到),水電費查詢系統等(小區,物業公司,大學寢室等),錄取,證書查詢系統。
4.使用靈活:支持多次查詢,比如工資查詢往往多月查詢,那麼你只需一個月放一個資料庫,下拉的查詢選項自動獲取(選項即文件名);且每次查詢除了設置的查詢條件列的標題得一致外,其他的都是自定義可以不一樣(任意列數,任意列標題,任意行數);如果查詢條件不一致,將代碼文件復制一份後用不同文件夾命名,然後修改查詢條件即可使用。
http://www.2cto.com/ym/201605/63631.html