當前位置:首頁 » 文件管理 » php上傳xls

php上傳xls

發布時間: 2024-11-25 11:01:46

php怎麼讀取excel 文件數據並輸出

PHPExcel

PHPExcel是用來操作Office Excel 文檔的一個PHP類庫,它基於微軟的OpenXML標准和PHP語言。可以使用它來讀取、寫入不同格式的電子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。

  • PHP讀取示例代碼

//獲取上傳的excel臨時文件
$path=$_FILES["file"]["tmp_name"];
//將臨時文件移動當前目錄,可自定義存儲位置

move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]);
//將獲取在伺服器中的Excel文件,此處為上傳文件名
$path=$_FILES["file"]["name"];
//調用readExcel函數返回一個
二維數組
$exceArray=readExcel($path);

//創建一個讀取
excel函數
functionreadExcel($path){
//引入PHPExcel類庫
include'Classes/PHPExcel.php';
include'Classes/PHPExcel/IOFactory.php';

$type='Excel5';//設置為Excel5代表支持2003或以下版本,
Excel2007代表2007版
$xlsReader=PHPExcel_IOFactory::createReader($type);
$xlsReader->setReadDataOnly(true);
$xlsReader->setLoadSheetsOnly(true);
$Sheets=$xlsReader->load($path);
//開始讀取上傳到伺服器中的Excel文件,返回一個
二維數組
$dataArray=$Sheets->getSheet(0)->
toArray();
return$dataArray;
}

Ⅱ 基於php中使用excel的簡單介紹

在工作中需要處理多語言的翻譯問題,翻譯都是寫在excel表格裡面。為了處理方便我就保留中文和英文兩列。
這樣需要將這些數據從excel中取出來,然乎保存在excel的數組中,通過使用循環數組將相應的數據放入到資料庫中。
所以工作的第一步就是要將數據從excel中取出來。這里我使用到了一個開源php處理excel類:phpexcel.
該項目的詳細信息
http://phpexcel.codeplex.com/

我目前使用的是phpexcel1.7.3版本,
壓縮後裡面有一個PHPExcel和PHPExcel.php文件。
我們主要使用那個PHP文件。見下圖文件目錄結構
這個版本據說是可以支持excel2007,但是我使用2007編輯的xlsx是無法獲得該庫的支持。於是乎我就將它轉化為2003。感覺支持地很好。
下面介紹一下具體的使用:
復制代碼
代碼如下:
require_once('./phpexcel1.7.3/PHPExcel.php');
$php_excel_obj
=
new
PHPExcel();
$php_reader
=
newPHPExcel_Reader_Excel2007();
if(!$php_reader->canRead($file_name)){

$php_reader=
new
PHPExcel_Reader_Excel5();

if(!$php_reader->canRead($file_name)){

echo'NO
Excel!'

}
}
$php_excel_obj
=
$php_reader->load($file_name);
$current_sheet
=$php_excel_obj->getSheet(0);
上面的主要功能是初始化相關的excel類,並裝載excel第一個sheet
復制代碼
代碼如下:
$all_column
=$current_sheet->getHighestColumn();
$all_row
=$current_sheet->getHighestRow();
以上分別獲得該表格的最大列值(字母表示如:『G'),和最大的行數(數值表示)
下面將使用循環來講excel裡面的數據讀到excel中:
復制代碼
代碼如下:
$all_arr
=
array();
$c_arr
=
array();
//字元對照表
for($r_i
=
1;
$r_i<=$all_row;
$r_i++){

$c_arr=
array();

for($c_i=
'A'
$c_i<=
'B'
$c_i++){

$adr=
$c_i
.
$r_i;

$value=
$current_sheet->getCell($adr)->getValue();

if($c_i==
'A'
&&
empty($value)
)
break;

if(is_object($value))
$value=
$value->__toString();

$c_arr[$c_i]=
$value;

}

$c_arr&&
$all_arr[]
=
$c_arr;
}
下面簡單地介紹一下phpexcel的寫操作,這個操作經常用於將資料庫中的數據導入到excel中,便於展示和做成更美觀的效果。
復制代碼
代碼如下:
require_once('./phpexcel1.7.3/PHPExcel.php');
$excel_obj
=
new
PHPExcel();
$objWriter
=
newPHPExcel_Writer_Excel5($excel_obj);
$excel_obj->setActiveSheetIndex(0);
$act_sheet_obj=$excel_obj->getActiveSheet();
$act_sheet_obj->setTitle('sheet');
$act_sheet_obj->setCellValue('A1',
'字元串內容');
$act_sheet_obj->setCellValue('A2',
26);
$file_name
=
"output.xls";
$objWriter->save($file_name);
代碼很簡單,
首先初始化相關的excel寫類,然後寫入數據,最後保存為xls文件。
輸出的效果見圖

Ⅲ 如何通過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=」上傳失敗」;
}

Ⅳ 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


Ⅳ 濡備綍鍒╃敤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>

熱點內容
視頻壓縮安卓 發布:2024-11-25 13:02:18 瀏覽:341
當貝上傳應用 發布:2024-11-25 13:01:23 瀏覽:272
中國聯通湖北伺服器地址 發布:2024-11-25 13:00:38 瀏覽:747
訪問內網計算機 發布:2024-11-25 12:37:53 瀏覽:969
蘋果文件夾名字大全 發布:2024-11-25 12:28:03 瀏覽:590
ipad上b站緩存分屏 發布:2024-11-25 12:27:59 瀏覽:981
資料庫日誌文件查看 發布:2024-11-25 12:17:28 瀏覽:48
騰訊視頻明明緩存了看不了 發布:2024-11-25 12:08:01 瀏覽:182
存儲區域網路分布 發布:2024-11-25 12:07:12 瀏覽:389
安卓怎麼用湯不熱 發布:2024-11-25 11:49:06 瀏覽:844