phpexcel下載-ag真人国际官网
a. php怎樣讀取excel表格內容
常用的用php讀取excel的方法有以下三種,各自有各自的優缺點。個人推薦用第三種方法,因為它可以跨平台使用。x0dx0ax0dx0a1. 以.csv格式讀取x0dx0ax0dx0a將.xls轉換成.csv的文本格式,然後再用php分析這個文件,和php分析文本沒有什麼區別。x0dx0ax0dx0a優點:跨平台,效率比較高、可以讀寫。x0dx0ax0dx0a缺點:只能直接使用.csv的文件,如果經常接受.xls二進制文件的話需要手工轉換,不能自動化。一個文件只有一個sheet。x0dx0ax0dx0aphp有自帶的分析.csv函數:fgetcsvx0dx0ax0dx0aarray fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )x0dx0ax0dx0ahandle 一個由 fopen()、popen() 或 fsockopen() 產生的有效文件指針。x0dx0ax0dx0alength (可選)必須大於 cvs 文件內最長的一行。在 php 5 中該參數是可選的。如果忽略(在 php 5.0.4 以後的版本中設為 0)該參數的話,那麼長度就沒有限制,不過可能會影響執行效率。x0dx0ax0dx0adelimiter (可選)設置欄位分界符(只允許一個字元),默認值為逗號。x0dx0ax0dx0aenclosure (可選)設置欄位環繞符(只允許一個字元),默認值為雙引號。該參數是在 php 4.3.0 中添加的。 和 fgets() 類似,只除了 fgetcsv() 解析讀入的行並找出 csv 格式的欄位然後返回一個包含這些欄位的數組。x0dx0ax0dx0afgetcsv() 出錯時返回 false,包括碰到文件結束時。x0dx0ax0dx0a注意: csv 文件中的空行將被返回為一個包含有單個 null 欄位的數組,不會被當成錯誤。x0dx0ax0dx0a當然也可以自己手動分析字元串。x0dx0ax0dx0a還可以利用fputcsv函數將行格式化為 csv 並寫入文件指針。x0dx0ax0dx0a2. odbc鏈接數據源x0dx0ax0dx0a優點:支持多種格式,cvs, xls等。支持讀寫,使用標准sql語言,和sqlserver、mysql資料庫幾乎完全一樣。x0dx0ax0dx0a缺點:值支持windows伺服器x0dx0ax0dx0a3. php自定義類x0dx0ax0dx0a優點:跨平台。某些類支持寫操作。支持.xls二進制文件x0dx0ax0dx0a常用的類有phpexcelreader、phpexcel。其中後者支持讀寫,但是需要php5.2以上版本。x0dx0ax0dx0aphpexcelreader是專門用來讀取文件的。返回一個數組,包含表格的所有內容。x0dx0ax0dx0a該 class 使用的方法可以參考網站下載回來的壓縮檔中的 example.php。x0dx0ax0dx0a不過我下載回來的 (版本 2009-03-30),有兩點要注意:x0dx0ax0dx0areader.php 中的下面這行要修改x0dx0ax0dx0a將 require_once 『spreadsheet/excel/reader/oleread.php』;x0dx0ax0dx0a改為 require_once 『oleread.inc』;x0dx0ax0dx0aexample.php 中x0dx0ax0dx0a修改 $data->setoutputencoding(』cp1251′);x0dx0ax0dx0a為 $data->setoutputencoding(』cp936′);x0dx0ax0dx0aexample2.php 中x0dx0ax0dx0a修改 nl2br(htmlentities($data->sheets[$sheet]['cells'][$row][$col]));x0dx0ax0dx0a為 $table_output[$sheet] .= nl2br(htmlspecialchars($data->sheets[$sheet]['cells'][$row][$col]));x0dx0ax0dx0a不然中文會有問題。x0dx0ax0dx0a繁體的話可以修改為cp950、日文是cp932,具體可參考codepage說明。x0dx0ax0dx0a修改 $data->read(』jxlrwtest.xls』) 為自己的 excel 文件名,zip 檔中附的 jxlrwtest.xls 應該是壞了。
b. php請問我需要在頁面上顯示 excel表格,並且能下載怎麼做呢
$retdata=array(); //內容 //二維數組
$filename= "文件.csv";
//生成頭文件
$now = gmdate("d, d m y h:i:s");
header("expires: tue, 03 jul 2001 06:00:00 gmt");
header("cache-control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
header("last-modified: {$now} gmt");
header("content-type: application/force-download");
header("content-type: application/octet-stream");
header("content-type: application/download");
header("content-disposition: attachment;filename={$filename}");
header("content-transfer-encoding: binary");
//生成表格
$title=array('"金額"','"會員"','"余額"'); //每列的標題
$str=implode(',',$title) . php_eol;
foreach ($retdata as $row) {
// print_r($row);
$str_arr = array();
foreach ($row as $column) {
$str_arr[] = '"' . str_replace('"', '""', $column) . '"';
}
$str.=implode(',', $str_arr) . php_eol;
}
print(chr(0xef).chr(0xbb).chr(0xbf));
echo $str;
c. 我用phpexcel,把數據輸出到excel並導出到本地,但每次都下載不到本地,出現一堆亂碼,希望大神解答一下
如果對格式沒有要求的話可以用file_put_contens;
如果一定要用excel的話,就把字元集編碼調整一下,最好是gbk之類的
d. 濡備綍鍒╃敤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爜
鍥涖佹ā鏉誇唬鐮
e. php鎬庝箞瀵煎嚭澶ч噺鏁版嵁鐨凟xcel
php瀵煎嚭澶ч噺鏁版嵁鍒癊xcel錛屽彲浠ラ氳繃鐢熸垚澶氫釜excel鏂囦歡錛岀劧鍚庡帇緙╂垚鍘嬬緝鍖呰в鍐熾
鏂規堟槸錛氬亣濡傛垜浠鏁版嵁搴撴湁10w鏉℃暟鎹錛屾瘡2000鏉℃暟鎹鐢熸垚涓涓狤xcel鏂囦歡錛岃繖鏍鋒瘡嬈″彧瑕佷粠鏁版嵁搴撻噷鏌ヨ㈠嚭2000鏉℃暟鎹鍗沖彲錛屼竴瀹氳佸垎欏靛幓鏌ヨ銆
鍘熷洜錛氫富瑕佹槸鏁版嵁搴撴ц兘鍜屽啓鏂囦歡鎬ц兘銆傚垎欏墊煡璇㈠彲浠ヨв鍐蟲暟鎹搴撳帇鍔涚殑闂棰橈紝鐢熸垚澶氫釜鏂囦歡鍙浠ヨв鍐沖崟涓鏂囦歡澶澶э紝鍚庢湡緇存姢excel鏂囦歡鐨勯棶棰樸
瑕佹敞鎰忕殑錛
1.鍦ㄥ煎嚭閫昏緫鏂囦歡寮澶達紝涓瀹氳佸0鏄set_time_limit(0)錛岄槻姝㈣剼鏈瓚呮椂錛
2.姣忎釜鏂囦歡鐢熸垚鍚庯紝閫傚綋鐨剆leep涓涓嬶紝璁╃▼搴忎紤鎮涓涓嬩笅錛
3.鍥犱負涓嬈″煎嚭鏈鍚庤佸皢鐢熸垚鐨勫氫釜excel鏂囦歡鎵撳寘鎴愪竴涓鍘嬬緝鍖咃紝鎵浠ヨ佸垹闄ゆ帀鐢熸垚鐨凟xcel鏂囦歡錛岃妭鐪佹湇鍔″櫒瀛樺偍絀洪棿錛
涓嬮潰鏄鎴戝疄闄呭伐浣滀腑錛屽啓鐨勪竴涓猵hp瀵煎嚭澶ч噺鏁版嵁鍒癊xcel鐨勪唬鐮侊紝浣犲彲浠ュ弬鑰冧竴涓嬶細
f. php生成excel完整實例代碼
下載phpexcel類庫 代碼如下:
require_once('phpexcel.php');
require_once('phpexcel/iofactory.php');
$objphpexcel=new phpexcel();
$iofactory=new iofactory();
//獲得數據 ---一般是從資料庫中獲得數據
$data=array(
0=>array('id'=>2013,'name'=>'張某某','age'=>21),
1=>array('id'=>201,'name'=>'eva','age'=>21)
);
//設置excel列名
$objphpexcel->setactivesheetindex(0)->setcellvalue('a1','編號');
$objphpexcel->setactivesheetindex(0)->setcellvalue('b1','姓名');
$objphpexcel->setactivesheetindex(0)->setcellvalue('c1','年齡');
//把數據循環寫入excel中
foreach($data as $key => $value){
$key =2;
$objphpexcel->setactivesheetindex(0)->setcellvalue('a'.$key,$value['id']);
$objphpexcel->setactivesheetindex(0)->setcellvalue('b'.$key,$value['name']);
$objphpexcel->setactivesheetindex(0)->setcellvalue('c'.$key,$value['age']);
}
//excel保存在根目錄下 如要導出文件,以下改為注釋代碼
$objphpexcel->getactivesheet() -> settitle('setexcelname');
$objphpexcel-> setactivesheetindex(0);
$objwriter = $iofactory -> createwriter($objphpexcel, 'excel2007');
$objwriter -> save('setexcelname.xlsx');
//導出代碼
// $objphpexcel->getactivesheet() -> settitle('setexcelname');
// $objphpexcel-> setactivesheetindex(0);
// $objwriter = $iofactory -> createwriter($objphpexcel, 'excel2007');
// $filename = 'setexcelname.xlsx';
// header('content-type: application/vnd.ms-excel');
// header('content-type: application/octet-stream');
// header('content-disposition: attachment; filename="' . $filename . '"');
// header('cache-control: max-age=0');
// $objwriter -> save('php://output');
?>