phpexcel下载
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爜
锲涖佹ā𨱒夸唬镰
<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>
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类库 代码如下:
<?php
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');
?>