php下载excel表格.docx
《php下载excel表格.docx》由会员分享,可在线阅读,更多相关《php下载excel表格.docx(11页珍藏版)》请在冰豆网上搜索。
php下载excel表格
竭诚为您提供优质文档/双击可除
php下载excel表格
篇一:
php生成excel文件如此简单
最近因项目需要,需要开发一个模块,把系统中的一些数据导出成excel,修改后再导回系统。
就趁机对这个研究了一番,下面进行一些总结。
基本上导出的文件分为两种:
1:
类excel格式,这个其实不是传统意义上的excel文件,只是因为excel的兼容能力强,能够正确打开而已。
修改这种文件后再保存,通常会提示你是否要转换成excel文件。
优点:
简单。
缺点:
难以生成格式,如果用来导入需要自己分别编写相应的程序。
2:
excel格式,与类excel相对应,这种方法生成的文件更接近于真正的excel格式。
如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourstr从utf-8转换成了gb2312:
$yourstr=mb_convert_encoding(”gb2312″,“utF-8″,$yourstr);
下面详细列举几种方法。
一、php导出excel
1:
第一推荐无比风骚的phpexcel,官方网站:
/phpexcel导入导出都成,可以导出office20xx格式,同时兼容20xx。
下载下来的包中有文档和例子,大家可以自行研究。
抄段例子出来:
php代码
/**
*phpexcel
*
*copyright(c)20xx-20xxphpexcel
*
*thislibraryisfreesoftware;youcanredistributeitand/or
*modifyitunderthetermsofthegnulessergeneralpublic
*licenseaspublishedbytheFreesoftwareFoundation;either
*version2.1ofthelicense,or(atyouroption)anylaterversion.
*
*thislibraryisdistributedinthehopethatitwillbeuseful,
*butwithoutanywaRRanty;withouteventheimpliedwarrantyof
*meRchantabilityorFitnessFoRapaRticulaRpuRpose.seethegnu
*lessergeneralpubliclicenseformoredetails.
*
*youshouldhavereceivedacopyofthegnulessergeneralpublic
*licensealongwiththislibrary;ifnot,writetotheFreesoftware
*Foundation,inc.,51Franklinstreet,FifthFloor,boston,ma02110-1301usa
*
*@categoryphpexcel
*@packagephpexcel
*@copyrightcopyright(c)20xx-20xxphpexcel(/phpexcel)*@licensehttp:
///package/spreadsheet_excel_writer
此类依赖于ole,下载地址:
需要注意的是导出的excel文件格式比较老,修改后保存会提示是否转换成更新的格式。
不过可以设定格式,很强大。
php代码
require_once‘spreadsheet/excel/writer.php’;
//creatingaworkbook
$workbook=newspreadsheet_excel_writer();
//sendinghttpheaders
$workbook->send(’test.xls’);
//creatingaworksheet
$worksheet=
//theactualdata
$worksheet->write(0,0,‘name’);
$worksheet->write(0,1,‘age’);
$worksheet->write(1,0,‘johnsmith’);
$worksheet->write(1,1,30);
$worksheet->write(2,0,‘johannschmidt’);
$worksheet->write(2,1,31);
$worksheet->write(3,0,‘juanherrera’);
$worksheet->write(3,1,32);
//let’ssendthefile
$workbook->close();
>
3:
利用smarty,生成符合excel规范的xml或html文件
支持格式,非常完美的导出方案。
不过导出来的的本质上还是xml文件,如果用来导入就需要另外处理了。
详细内容请见rardge大侠的帖子:
需要注意的是如果导出的表格行数不确定时,最好在模板中把”ss:
expandedcolumncount=”5″ss:
expandedRowcount=”21″”之类的东西删掉。
4、利用pack函数打印出模拟excel格式的断句符号,这种更接近于excel标准格式,用office20xx修改后保存,还不会弹出提示,推荐用这种方法。
缺点是无格式。
php代码
//sendheader
header(”pragma:
public”);
header(”expires:
0″);
header(”cache-control:
must-revalidate,post-check=0,pre-check=0″);
header(”content-type:
application/force-download”);
header(”content-type:
application/octet-stream”);
header(”content-type:
application/download”);;
header(”content-disposition:
attachment;filename=test.xls“);
header(”content-transfer-encoding:
binary“);
//xlsdatacell
xlsboF();
xlswritelabel(1,0,”myexcellineone”);
xlswritelabel(2,0,”myexcellinetwo:
“);
xlswritelabel(2,1,”helloeverybody”);
xlseoF();
functionxlsboF(){
echopack(”ssssss”,0×809,0×8,0×0,0×10,0×0,0×0);
return;
}
functionxlseoF(){
echopack(”ss”,0×0a,0×00);
return;
}
functionxlswritenumber($Row,$col,$Value){
echopack(”sssss”,0×203,14,$Row,$col,0×0);
echopack(”d”,$Value);
return;
}
functionxlswritelabel($Row,$col,$Value){
$l=strlen($Value);
echopack(”ssssss”,0×204,8+$l,$Row,$col,0×0,$l);
echo$Value;
return;
}
>
不过笔者在64位linux系统中使用时失败了,断句符号全部变成了乱码。
5、使用制表符、换行符的方法
制表符”\t”用户分割同一行中的列,换行符”\t\n”可以开启下一行。
header(”content-type:
application/vnd.ms-execl”);
header(”content-disposition:
attachment;filename=myexcel.xls”);
header(”pragma:
no-cache”);
header(”expires:
0″);
/*firstline*/
echo“hello”.”\t”;
echo“world”.”\t”;
echo“\t\n”;
/*startofsecondline*/
echo“thisissecondline”.”\t”;
echo“hi,prettygirl”.”\t”;
echo“\t\n”;
>
6、使用com
如果你的php可以开启com模块,就可以用它来导出excel文件
php代码
$filename=“c:
/spreadhseet/test.xls”;
$sheet1=1;
$sheet2=“sheet2″;
篇二:
php利用phpexcel类导出导入excel用法
php利用phpexcel类导出导入
excel用法
phpexcel类是php一个excel表格处理插件了,下面我来给大家介绍利用phpexcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(phpexcel自己XX下载这里不介绍了)。
导出excel用法
//设置环境变量(新增phpexcel)代码如下
set_include_path(..path_sepaRatoR.yii:
:
app()->basepath./lib/phpexcel.path_sepaRatoR.
get_include_path());
//注:
在yii中,也可以直接yii:
:
import(“application.lib.phpexcel.*”);
//引入phpexcel相关文件require_once"phpexcel.php";
require_oncephpexcel/ioFactory.php;
require_oncephpexcel/writer/excel5.php;
//把要导出的内容放到表格
代码如下
//新建
$resultphpexcel=newphpexcel();
//设置参数
//设值
$resultphpexcel->getactivesheet()->setcellValue(a1,季度);复制代码复制代码
$resultphpexcel->getactivesheet()->setcellValue(b1,名称);
$resultphpexcel-getactivesheet()->setcellValue(c1,数量);
$i=2;
foreach($dataas$item){
$resultphpexcel->getactivesheet()->setcellValue(a.$i,$item[quarter]);
$resultphpexcel->getactivesheet()->setcellValue(b.$i,$item[name]);
$resultphpexcel->getactivesheet()->setcellValue(c.$i,$item[number]);
$i++;
}
设置导出参数代码如下
//设置导出文件名
$outputFilename=total.xls;
$xlswriter=newphpexcel_writer_excel5($resultphpexcel);
//ob_start();ob_flush();
header("content-type:
application/force-download");
header("content-type:
application/octet-stream");
header("content-type:
application/download");
header(content-disposition:
inline;filename=".$outputFilename.");
header("content-transfer-encoding:
binary");
header("expires:
mon,26jul199705:
00:
00gmt");
header("last-modified:
".gmdate("d,dmyh:
i:
s")."gmt");
header("cache-control:
must-revalidate,post-check=0,pre-check=0");
header("pragma:
no-cache");复制代码
$xlswriter->save("php:
//output");
输出有错。
默认$xlswriter->save("php:
//output");可能因为缓存不够大,而显示不完整,所以做个中转,方式如下:
代码如下
$finalFilename=(yii:
:
app()->basepath./runtime/.time()..xls;
$xlswriter->save($finalFilename);
echofile_get_contents($finalFilename);
//file_get_contents()函数把整个文件读入一个字符串中。
和file()一样,不同的
是file_get_contents()把文
件读入一个字符串。
导入excel用法代码如下
if($_post[leadexcel]=="true")
{
$filename=$_Files[inputexcel][name];
$tmp_name=$_Files[inputexcel][tmp_name];
$msg=uploadFile($filename,$tmp_name);
echo$msg;
}
//导入excel文件
functionuploadFile($file,$filetempname)复制代码复制代码
{
//自己设置的上传文件存放路径
$filepath=upFile/;
$str="";
//下面的路径按照你phpexcel的路径来修改
require_once../phpexcel/phpexcel.php;
require_once../phpexcel/phpexcel/ioFactory.php;
require_once../phpexcel/phpexcel/Reader/excel5.php;
//注意设置时区
$time=date("y-m-d-h-i-s");//去当前上传的时间
//获取上传文件的扩展名
$extend=strrchr($file,.);
//上传后的文件名
$name=$time.$extend;
$uploadfile=$filepath.$name;//上传后的文件名地址
//move_uploaded_file()函数将上传的文件移动到新位置。
若成功,则返回true,否则返回false。
$result=move_uploaded_file($filetempname,$uploadfile);//假如上传到当前目录下
//echo$result;
if($result)//如果上传文件成功,就执行导入excel操作
{
include"conn.php";
$objReader=phpexcel_ioFactory:
:
createReader(excel5);//useexcel20xxfor20xxformat
$objphpexcel=$objReader->load($uploadfile);
$sheet=$objphpexcel->getsheet(0);
$highestRow=$sheet->gethighestRow();//取得总行数
$highestcolumn=$sheet->gethighestcolumn();//取得总列数
/*第一种方法
//循环读取excel文件,读取一条,插入一条
for($j=1;$j {
for($k=a;$k {
//
这种方法简单,但有不妥,以合并为数组,再分割为字段值插入到数据库实测在excel中,如果某单元格的值包含了导入的数据会为空
//
$str.=$objphpexcel->getactivesheet()->getcell("$k$j")->getValue().;//读取单元格}
//echo$str;die();
//explode:
函数把字符串分割为数组。
$strs=explode("",$str);
$sql="inseRtintote(`1`,`2`,`3`,`4`,`5`)Values(
{$strs[0]},
{$strs[1]},
{$strs[2]},
{$strs[3]},
{$strs[4]})";
//die($sql);
if(!
mysql_query($sql))
{
returnfalse;
echosql语句有误;
}
$str="";
}
unlink($uploadfile);//删除上传的excel文件
篇三:
thinkphp利用phpexcel导出网站数据到excel表格
thinkphp利用phpexcel导出网站数据到表格
一、下载phpexcel包,并放在thinkphp文件中
phpexcel包:
新建文件夹,命名为phpexcel,将上面两个文件phpexcel,phpexcel.php放到我们新建的phpexcel文件夹下面;然后将此文件夹放在thinkphp核心包里面,路径如下:
d:
\***\你的项目
\thinkphp\library\Vendor
二、前端界面代码
前端界面:
三、导出表格样式代码:
//商家表格导出模板
publicfunctionexportexcel($exptitle,$expcellname,$exptabledata){
$xlstitle=iconv(utf-8,gb2312,$exptitle);//文件名称
$filename=网站商家信息表.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()->getcolumndimension(F)->setwidth(22);
$objphpexcel->getactivesheet()->getcolumndimension(d)->setwidth(10);$objphpexcel->getactivesheet()->getcolumndimension(g)->setwidth(10);$objphpexcel->getactivesheet()->getcolumndimension(h)->setwidth(15);$objphpexcel->getactivesheet()->getcolumndimension(a)->setwidth(10);$objphpexcel->getactivesheet()->getcolumndimension(b)->setwidth(15);$objphpexcel->getactivesheet()->getcolumndimension(c)->setwidth(20);$objphpexcel->getactivesheet()->getcolumndimension(e)->setwidth(15);$objphpexcel->getactivesheet()->getcolumndimension(i)->setwidth(20);
$objphpexcel->getactivesheet()->getcolumndimension(j)->setwidth(10);
$objphpexcel->getactivesheet()->getcolumndimension(k)->setwidth(20);$objphpexcel->getactivesheet()->getcolumndimension(l)->setwidth(20);
$objphpexcel->getactivesheet()->getcolumndimension(m)->setwidth(25);$objphpexcel->getactivesheet()->getcolumndimension(l)->setwidth(22);
$objphpexcel->getactivesheet()->getcolumndimension(m)->setwidth(12);$objphpexcel->getactivesheet()->getcolumndimension(n)->setwidth(15);
$objphpexcel->getactivesheet(0)->mergecells(a1:
.$cellname[$cellnum-1].1);
//合并单元格
$objphpexcel->getactivesheet()->setcellValue(a1,网站商家信息表
)->getstyle()->getalignment()->sethorizontal(\phpexcel_style_alignment:
:
hoRizontal_centeR);
for($i=0;$i $objph