




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Good is good, but better carries it.精益求精,善益求善。PHP导入导出Excel方法小结-PHP导入导出Excel方法小结PostedbyGgNETon星期五,一月9,2009HYPERLINK/index.php/archives/3858lrespond#respondoLeaveacomment?Leaveacomment(0)HYPERLINK/index.php/archives/3858lcomments#commentsoGotocomments?Gotocomments最近因项目需要,需要开发一个模块,把系统中的一些数据导出成Excel,修改
2、后再导回系统。就趁机对这个研究了一番,下面进行一些总结。基本上导出的文件分为两种:1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已。修改这种文件后再保存,通常会提示你是否要转换成Excel文件。优点:简单。缺点:难以生成格式,如果用来导入需要自己分别编写相应的程序。2:Excel格式,与类Excel相对应,这种方法生成的文件更接近于真正的Excel格式。如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312:$yourStr=mb_convert_encoding(“
3、gb2312,“UTF-8,$yourStr);下面详细列举几种方法。一、PHP导出Excel1:第一推荐无比风骚的PHPExcel,官方网站:/PHPExcel导入导出都成,可以导出office2007格式,同时兼容2003。下载下来的包中有文档和例子,大家可以自行研究。抄段例子出来:getProperties()-setCreator(“MaartenBalliauw”);$objPHPExcel-getProperties()-setLastModifiedBy(“MaartenBalliauw”);$objPHPExcel-getProperties()-setTitle(“Offic
4、e2007XLSXTestDocument”);$objPHPExcel-getProperties()-setSubject(“Office2007XLSXTestDocument”);$objPHPExcel-getProperties()-setDescrption(“TestdocumentforOffice2007XLSX,generatedusingPHPclasses.”);$objPHPExcel-getProperties()-setKeywords(“office2007openxmlphp”);$objPHPExcel-getProperties()-setCategor
5、y(“Testresultfile”);/Addsomedataechodate(H:i:s).”Addsomedatan”;$objPHPExcel-setActiveSheetIndex(0);$objPHPExcel-getActiveSheet()-setCellValue(A1,Hello);$objPHPExcel-getActiveSheet()-setCellValue(B2,world!);$objPHPExcel-getActiveSheet()-setCellValue(C1,Hello);$objPHPExcel-getActiveSheet()-setCellValu
6、e(D2,world!);/Renamesheetechodate(H:i:s).”Renamesheetn”;$objPHPExcel-getActiveSheet()-setTitle(Simple);/Setactivesheetindextothefirstsheet,soExcelopensthisasthefirstsheet$objPHPExcel-setActiveSheetIndex(0);/SaveExcel2007fileechodate(H:i:s).”WritetoExcel2007formatn”;$objWriter=newPHPExcel_Writer_Exce
7、l2007($objPHPExcel);$objWriter-save(str_replace(.php,.xlsx,_FILE_);/Echodoneechodate(H:i:s).”Donewritingfile.rn”;2、使用pear的Spreadsheet_Excel_Writer类下载地址:/package/Spreadsheet_Excel_Writer此类依赖于OLE,下载地址:/package/OLE需要注意的是导出的Excel文件格式比较老,修改后保存会提示是否转换成更新的格式。不过可以设定格式,很强大。send(test.xls);/Creatingaworksheet$
8、worksheet=&$workbook-addWorksheet(Myfirstworksheet);/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
9、ssendthefile$workbook-close();?3:利用smarty,生成符合Excel规范的XML或HTML文件支持格式,非常完美的导出方案。不过导出来的的本质上还是XML文件,如果用来导入就需要另外处理了。详细内容请见rardge大侠的帖子:/viewthread.php?tid=745757需要注意的是如果导出的表格行数不确定时,最好在模板中把”ss:ExpandedColumnCount=”5ss:ExpandedRowCount=”21”之类的东西删掉。4、利用pack函数打印出模拟Excel格式的断句符号,这种更接近于Excel标准格式,用office2003修改后保
10、存,还不会弹出提示,推荐用这种方法。缺点是无格式。不过笔者在64位HYPERLINKjavascript:;t_selflinux系统中使用时失败了,断句符号全部变成了乱码。5、使用制表符、换行符的方法制表符”t”用户分割同一行中的列,换行符”tn”可以开启下一行。6、使用com如果你的PHP可以开启com模块,就可以用它来导出Excel文件Application-valuen”;print“Loadedversion:$excel_app-Application-versionn”;$Workbook=$excel_app-Workbooks-Open(“$filename”)orDie(“
11、Didnotopen$filename$Workbook”);$Worksheet=$Workbook-Worksheets($sheet1);$Worksheet-activate;$excel_cell=$Worksheet-Range(“C4);$excel_cell-activate;$excel_result=$excel_cell-value;print“$excel_resultn”;$Worksheet=$Workbook-Worksheets($sheet2);$Worksheet-activate;$excel_cell=$Worksheet-Range(“C4);$exc
12、el_cell-activate;$excel_result=$excel_cell-value;print“$excel_resultn”;#Tocloseallinstancesofexcel:$Workbook-Close;unset($Worksheet);unset($Workbook);$excel_app-Workbooks-Close();$excel_app-Quit();unset($excel_app);?一个更好的例子:/u/16928/showart_387171.html一、PHP导入Excel1:还是用PHPExcel,官方网站:/PHPExcel。2:使用PHP
13、-ExcelReader,下载地址:/projects/phpexcelreader举例:setOutputEncoding(utf8);$data-read(jxlrwtest.xls);error_reporting(E_ALLE_NOTICE);for($i=1;$isheets0numRows;$i+)for($j=1;$jsheets0numCols;$j+)echo“”.$data-sheets0cells$i$j.”,”;echo“n”;?方法一方法二?php/definedatabaseparameter$dbHost=localhost;$dbUsername=webuser
14、;$dbPassword=123456;$dbDbName=pa_bbs;$dbTablename=pw_actions;/connectdatabase$Connect=mysql_connect($dbHost,$dbUsername,$dbPassword)ordie(Couldntconnect.);$Db=mysql_select_db($dbDbName,$Connect)ordie(Couldntselectdatabase.);/setheaderinfomation$file_type=vnd.ms-excel;$file_ending=xls;header(Content-
15、Type:application/$file_type);header(Content-Disposition:attachment;filename=$dbTablename.$file_ending);header(Pragma:no-cache);header(Expires:0);/exportdatatoexceldate_default_timezone_set(Asia/Shanghai);$now_date=date(Y-m-dH:i:s);$title=数据库名:$dbDbName,数据表:$dbTablename,备份日期:$now_date;echo($titlen);$
16、sql=setnamesgbk;mysql_query($sql,$Connect);$sql=select*from.$dbTablename.;$ALT_Db=mysql_select_db($dbDbName,$Connect)ordie(Couldntselectdatabase);$result=mysql_query($sql,$Connect)ordie(mysql_error();$sep=t;for($i=0;$imysql_num_fields($result);$i+)echomysql_field_name($result,$i).t;print(n);$i=0;whi
17、le($row=mysql_fetch_row($result)$schema_insert=;for($j=0;$j问题总结注:mysql数据库为utf-8一、网上流行的一些函数functionexport($data)$data=iconv(utf-8,gb2312,$data);$filename=data.date(YmdHis).xls;header(Content-Type:application/vnd.ms-excel);Header(Accept-Ranges:bytes);Header(Content-type:charset=utf-8);header(Content-D
18、isposition:attachment;filename=.$filename);header(Pragma:no-cache);header(Expires:0);/$data这个变量如果是数组的话在函数里应该对数组进行分解,在excel里的分列用t,分行用n,iconv转码会出错,原因:1、无论编码是utf-8还是gb2312,因为我的$data数据是从编码为utf-8的mysql的数据库里查出,经过自己测试发现无论charset=两者中的任何一个,$data必须经过iconv转码为相应的格式才可以正常显示汉字;2、经本人测试,iconv遇到一些字符会出错;二、用$table=这种格式,函数为:functionexport($data)$filename=data.date(YmdHis).xls;header(Content-Type:application/vnd.ms-excel);Header(Accept-Ranges:bytes);Header(Content-type:charset=utf-8);header(Content-Disposition:attachment;filen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售代理合同模板(样式一)
- 教育实习单位与实习生合同样本
- 5《江上渔者》教学设计-2023-2024学年六年级下册语文统编版
- 拆除与废弃物处理合同
- 临床试验数据分析合同
- 2024秋闽教版信息技术五年级上册《第5课 插入图片秀美景》教学设计
- 外商投资企业员工股权激励合同
- 销售合同万能模板
- 新版车辆抵押合同范本
- 11 对人有礼貌 教学设计-2024-2025学年道德与法治一年级上册统编版
- 绘本故事在小学道德与法治课堂中的有效教学策略分析
- 保险授权书格式模板
- 胃癌影像诊断(共42张)
- 汽车维修合同管理制度
- 剑桥KET词汇表(中英对照)
- 2024年湖南高速铁路职业技术学院单招职业技能测试题库附答案
- (完整)低压配电柜技术规范
- 《通信原理》樊昌信曹丽娜编著第六版课件
- 《书籍装帧设计》 课件 项目2 书籍装帧设计要素
- 妊娠期合并症妇女的护理-妊娠合并心脏病的护理(妇产科护理课件)4EX
- 中职语文高教版基础模块上册《风景谈》公开课一等奖创新教学设计
评论
0/150
提交评论