PHP導(dǎo)入導(dǎo)出Excel方法小結(jié)說(shuō)課材料_第1頁(yè)
PHP導(dǎo)入導(dǎo)出Excel方法小結(jié)說(shuō)課材料_第2頁(yè)
PHP導(dǎo)入導(dǎo)出Excel方法小結(jié)說(shuō)課材料_第3頁(yè)
PHP導(dǎo)入導(dǎo)出Excel方法小結(jié)說(shuō)課材料_第4頁(yè)
PHP導(dǎo)入導(dǎo)出Excel方法小結(jié)說(shuō)課材料_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Good is good, but better carries it.精益求精,善益求善。PHP導(dǎo)入導(dǎo)出Excel方法小結(jié)-PHP導(dǎo)入導(dǎo)出Excel方法小結(jié)PostedbyGgNETon星期五,一月9,2009HYPERLINK/index.php/archives/3858lrespond#respondoLeaveacomment?Leaveacomment(0)HYPERLINK/index.php/archives/3858lcomments#commentsoGotocomments?Gotocomments最近因項(xiàng)目需要,需要開發(fā)一個(gè)模塊,把系統(tǒng)中的一些數(shù)據(jù)導(dǎo)出成Excel,修改

2、后再導(dǎo)回系統(tǒng)。就趁機(jī)對(duì)這個(gè)研究了一番,下面進(jìn)行一些總結(jié)?;旧蠈?dǎo)出的文件分為兩種:1:類Excel格式,這個(gè)其實(shí)不是傳統(tǒng)意義上的Excel文件,只是因?yàn)镋xcel的兼容能力強(qiáng),能夠正確打開而已。修改這種文件后再保存,通常會(huì)提示你是否要轉(zhuǎn)換成Excel文件。優(yōu)點(diǎn):簡(jiǎn)單。缺點(diǎn):難以生成格式,如果用來(lái)導(dǎo)入需要自己分別編寫相應(yīng)的程序。2:Excel格式,與類Excel相對(duì)應(yīng),這種方法生成的文件更接近于真正的Excel格式。如果導(dǎo)出中文時(shí)出現(xiàn)亂碼,可以嘗試將字符串轉(zhuǎn)換成gb2312,例如下面就把$yourStr從utf-8轉(zhuǎn)換成了gb2312:$yourStr=mb_convert_encoding(“

3、gb2312,“UTF-8,$yourStr);下面詳細(xì)列舉幾種方法。一、PHP導(dǎo)出Excel1:第一推薦無(wú)比風(fēng)騷的PHPExcel,官方網(wǎng)站:/PHPExcel導(dǎo)入導(dǎo)出都成,可以導(dǎo)出office2007格式,同時(shí)兼容2003。下載下來(lái)的包中有文檔和例子,大家可以自行研究。抄段例子出來(lái):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需要注意的是導(dǎo)出的Excel文件格式比較老,修改后保存會(huì)提示是否轉(zhuǎn)換成更新的格式。不過(guò)可以設(shè)定格式,很強(qiáng)大。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規(guī)范的XML或HTML文件支持格式,非常完美的導(dǎo)出方案。不過(guò)導(dǎo)出來(lái)的的本質(zhì)上還是XML文件,如果用來(lái)導(dǎo)入就需要另外處理了。詳細(xì)內(nèi)容請(qǐng)見(jiàn)rardge大俠的帖子:/viewthread.php?tid=745757需要注意的是如果導(dǎo)出的表格行數(shù)不確定時(shí),最好在模板中把”ss:ExpandedColumnCount=”5ss:ExpandedRowCount=”21”之類的東西刪掉。4、利用pack函數(shù)打印出模擬Excel格式的斷句符號(hào),這種更接近于Excel標(biāo)準(zhǔn)格式,用office2003修改后保

10、存,還不會(huì)彈出提示,推薦用這種方法。缺點(diǎn)是無(wú)格式。不過(guò)筆者在64位HYPERLINKjavascript:;t_selflinux系統(tǒng)中使用時(shí)失敗了,斷句符號(hào)全部變成了亂碼。5、使用制表符、換行符的方法制表符”t”用戶分割同一行中的列,換行符”tn”可以開啟下一行。6、使用com如果你的PHP可以開啟com模塊,就可以用它來(lái)導(dǎo)出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);?一個(gè)更好的例子:/u/16928/showart_387171.html一、PHP導(dǎo)入Excel1:還是用PHPExcel,官方網(wǎng)站:/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=數(shù)據(jù)庫(kù)名:$dbDbName,數(shù)據(jù)表:$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問(wèn)題總結(jié)注:mysql數(shù)據(jù)庫(kù)為utf-8一、網(wǎng)上流行的一些函數(shù)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這個(gè)變量如果是數(shù)組的話在函數(shù)里應(yīng)該對(duì)數(shù)組進(jìn)行分解,在excel里的分列用t,分行用n,iconv轉(zhuǎn)碼會(huì)出錯(cuò),原因:1、無(wú)論編碼是utf-8還是gb2312,因?yàn)槲业?data數(shù)據(jù)是從編碼為utf-8的mysql的數(shù)據(jù)庫(kù)里查出,經(jīng)過(guò)自己測(cè)試發(fā)現(xiàn)無(wú)論charset=兩者中的任何一個(gè),$data必須經(jīng)過(guò)iconv轉(zhuǎn)碼為相應(yīng)的格式才可以正常顯示漢字;2、經(jīng)本人測(cè)試,iconv遇到一些字符會(huì)出錯(cuò);二、用$table=這種格式,函數(shù)為: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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論