これは完全で使用可能な phpexcel の例です
getActiveSheet()->freezePane('A2'); $sharedStyle1 = new PHPExcel_Style(); $sharedStyle1->applyFromArray( array('fill' => array( 'type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('argb' => 'FFCCFFCC') ), 'borders' => array( 'bottom'=> array('style' => PHPExcel_Style_Border::BORDER_THIN), 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) ) )); $sharedStyle2 = new PHPExcel_Style(); $sharedStyle2->applyFromArray( array('fill' => array( 'type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('argb' => 'fff4f4f4') ) )); $objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A1:O1"); $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(50); $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(50); $objPHPExcel->getActiveSheet()->setTitle('Student Export');//?置?前工作表的名? for($i=0;$igetActiveSheet()->getStyleByColumnAndRow($i, 1)->getFont()->setBold(true);//?置第一行?容加粗 } $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, 1,'First Name'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, 1,'Last Name'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, 1,'Date of Birth'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, 1,'Attendance Year'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, 1,'Course studied'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, 1,'Agency Booking / Direct Booking'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(6, 1,'Student Country'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(7, 1,'Student City'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(8, 1,'Student Home phone number'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9, 1,'Student Mobile phone number'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(10, 1,'Student Email address'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(11, 1,'Emergency contact Name'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(12, 1,'Emergency contact phone number 1'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(13, 1,'Emergency contact phone number 2'); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(14, 1,'Order Date');$number=1;$orderdate=''; $firstname=''; $lastname=''; $dateodbirth=''; $attenddance=''; $studied=''; $booking=''; $country=''; $city=''; $home_phone=''; $mobile_phone=''; $email=''; $emer_name=''; $emer_phone1=''; $emer_phone2=''; $sql="select orders_id,date_purchased from orders order by orders_id desc"; $query=mysql_query($sql); while($arr=mysql_fetch_array($query)){ $number++; $orderdate=$arr['date_purchased']; $sql2="select * from orders_extra_info where orders_id='".$arr['orders_id']."'"; $query2=mysql_query($sql2); $num2=mysql_num_rows($query2); if($num2>0) { $arr2=mysql_fetch_array($query2); $firstname=$arr2['first_name']; $lastname=$arr2['last_name']; $dateodbirth=$arr2['date_of_birth']; $attenddance=$arr2['o_attendaceyear']; $booking=$arr2['o_agency']; if($booking==1) { $booking='Direct Sale'; } if($booking==2) { $booking='Agent Sale'; } $country_id=$arr2['country']; $city=$arr2['city']; $home_phone=$arr2['phone1']; $mobile_phone=$arr2['phone2']; $email=$arr2['email']; $emer_name=$arr2['emc_name']; $emer_phone1=$arr2['emc_phone1']; $emer_phone2=$arr2['emc_phone2']; $cou_sql="select countries_id,countries_name from countries where countries_id='".$country_id."'"; $con_query=mysql_query($cou_sql); $con_arr=mysql_fetch_array($con_query); $country=$con_arr['countries_name']; } $sql3="select products_name,orders_id from orders_products where orders_id='".$arr['orders_id']."'"; $query3=mysql_query($sql3); $num3=mysql_num_rows($query3); if($num3>0) { $studied=''; while($arr3=mysql_fetch_array($query3)) { $studied.=$arr3['products_name'].","; } $studied=substr($studied,0,strlen($studied)-1); } $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $number,$firstname); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $number,$lastname); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $number,$dateodbirth); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, $number,$attenddance); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, $number,$studied); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, $number,$booking); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(6, $number,$country); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(7, $number,$city); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(8, $number,$home_phone); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9, $number,$mobile_phone); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(10, $number,$email); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(11, $number,$emer_name); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(12, $number,$emer_phone1); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(13, $number,$emer_phone2); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(14, $number,$orderdate); } $objPHPExcel->setActiveSheetIndex(0);//?置打?excel??示哪?工作表 $excelName = 'Student_Export'.date("YmdHis").'.xls';//?置?出excel的文件名 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment; filename=".urlencode($excelName)); header("Content-Transfer-Encoding: binary"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); $objWriter->save('php://output'); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
数万件のレコードがある場合、出力レポートはエクスポートできず、ブラウザが回転し続けます。データ量が少ない場合にのみ役立ちます。この時にやりますか?
次のキャッシュ メソッドを使用できます:
1). PHPExcel_CachedObjectStorageFactory::cache_in_memory;
デフォルトでは、キャッシュ メソッドを初期化しない場合、PHPExcel はメモリ キャッシュ メソッドを使用します。
2).PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;
このキャッシュ方法を使用すると、セルはシリアル化された方法でメモリに保存され、メモリ使用量を削減するための比較的高性能なソリューションです。
3). PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
このメソッドはシリアル化メソッドと同様に、シリアル化後に gzip 圧縮を実行してメモリに格納しますが、読み取りと書き込みが少し遅くなります。入るとき。
4). PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;
cache_to_discISAM を使用すると、すべてのセルが一時ディスク ファイルに保存され、ファイル内のセルの位置のみが PHP のメモリに保存されます。これは、メモリにキャッシュするどの方法よりも遅くなります。ですが、メモリ使用量を大幅に削減できます。一時ディスク ファイルは、スクリプトが終了すると自動的に削除されます。
5). PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp; cache_to_discISAM と同様に、cache_to_phpTemp を使用すると、すべてのセルが php://temp I/O ストリームに存在し、その位置のみが PHP のメモリに保存されます。 PHP の php://memory ラッパーも同様にデータをメモリに保存しますが、保存されたデータのサイズがメモリ制限を超えると、データは一時ファイルに保存されます。デフォルトのサイズは 1MB です。ただし、初期化中に変更できます。最大値は 20,000 項目にエクスポートする必要があります。使用可能なキャッシュ メソッドがいくつかあります:
2).PHPExcel_CachedObjectStorageFactory::cache_in_memory_seria...
メモリの問題、マーク〜
PHPExcel 公式 Web サイトによると、PHPExcel はセルあたり 1K のスケールでメモリを使用します