1. 程式人生 > >匯入/匯出excel和PHPExcel基本使用

匯入/匯出excel和PHPExcel基本使用

* PHPExcel基本使用

* PS:文章如果有誤,請及時指出,給予修改

* 專案中匯入PHPExcel

* 可以去網上下載 github composer 都可以

* 為了方便下載,我將壓縮包新增到了百度雲  下面是地址和提取密碼

* 連結:https://pan.baidu.com/s/10eaZ0-Ij6kd4jriP3QOABA 提取密碼:enwi

 

* 踩的坑:

* 坑1:excel的單元格讀取的值 可能是空字串 使用empty()函式進行判斷 返回值為true 使用時先進行trim();

* 坑2:excel單元格的值若是函式計算出的值 讀取出來無法進行直接使用 需要判斷 

* 坑3:getOldCalculatedValue 和 getCalculatedValue , getCalculatedValue()這個方法已經不推薦使用了

         $value = $objPHPExcel->getActiveSheet()->getCell($column.$row)->getValue();

         if(substr($value,0,1) == '='){

                
$value = $objPHPExcel->getActiveSheet()->getCell($column.$row)->getOldCalculatedValue(); }

* 坑4:如果當前excel資料列數超過Z列,後續AA,AB ... 此時迴圈需要自己手動處理迴圈列數 則不能再使用 ++ 完成自動運算

* 坑5:匯出預設會自己建立一個sheet,如果需要匯出多個sheet,在第一個sheet後再執行 $objPHPExcel->createSheet();

* 坑6:設定單元格不以科學技術法顯示不生效,強制將數字字串轉換為字串,拼接空格即可

* 坑7:不要閒麻煩,每個取值和不確定的資料 都使用isset()進行判斷 ,很有可能當前取得列,其他sheet頁沒有

* 坑8:最好在方法開始的最外層,增加異常的捕獲.不然程式異常影響使用者體驗

* 坑9:在require引入PHPExcel擴充套件的時候,確保資料夾有可讀許可權

 

* excel檔案上傳 : 由於無法在上傳的時候 直接讀取檔案的值 只有先將檔案儲存後使用  使用完成後刪除即可[使用:unlink()] 

* laravel 框架自帶檔案儲存 使用也相當簡單  

$request = new Request();

* 兩種儲存檔案方式 store 和 storeAs

* store 方法接受相對於檔案系統配置的儲存檔案根目錄的路徑。這個路徑不能包含檔名,因為系統會自動生成唯一的 ID 作為檔名。

* 該方法還接受可選的第二個引數,用於儲存檔案的磁碟名稱。這個方法會返回相對於磁碟根目錄的檔案路徑

 

$path = $request->file->store('xxx');

$path = $request->file->store('xxx', 's3');

* storeAs 方法,它接受路徑、檔名和磁碟名

$path = $request->file->storeAs($save_path, $tmpName);

* 解釋為什麼中間為file 是因為傳遞引數 name為file 如果是其他 則換為傳遞的name即可

* storeAs只能將檔案儲存到storage資料夾下 如果要自定義檔案儲存除storage以外的路徑

* 使用PHP原生處理檔案機制:move_uploaded_file 若成功,則返回 true,否則返回 false。

$bool = move_uploaded_file($_FILES["file"]["tmp_name"], '$save_path);//$save_path 為檔案寫入路徑

*

* 使用:

* 專案中引用路徑

require_once './PHPExcel/PHPExcel.php';

* 匯出:PHPExcel例項化物件

* 匯入:PHPExcel_IOFactory例項化物件

$objPHPExcel = new PHPExcel(); 

$objPHPExcel = \PHPExcel_IOFactory::load($path); //$path為excel檔案絕對路徑

*******************獲取表格內容--使用時根據實際內容做修改******************************

/**

 * 獲取excel資訊和內容 TODO:使用時根據實際業務邏輯進行邏輯調整

 * @param string $path

 * @param bool $isReadContent

 * @return array

 */

private static function _getExcelInfoAndContent($path = '',$isReadContent = false)

{

  $info = array();

  //檔案內容獲取

  $objPHPExcel = \PHPExcel_IOFactory::load($path);

  //獲取sheet表格數目

  $info['sheetCount'] = $objPHPExcel->getSheetCount();

  //獲取sheet表格名稱

  $info['sheetName'] = $objPHPExcel->getSheetNames();

  $totalRowCount = 0;

  foreach ($info['sheetName'] as $k => $v){

    $objPHPExcel->setActiveSheetIndex($k);

    //獲取表格行數

    $rowCount = $objPHPExcel->getActiveSheet()->getHighestRow();

    $info['sheetRows'][$k] = rowCount == 0 ? 0 : $rowCount;

    $totalRowCount += $info['sheetRows'][$k];

    if($isReadContent){

      //獲取表格列數

      $columnCount = $objPHPExcel->getActiveSheet()->getHighestColumn();

      //如果超出範圍 只讀取到Z列 TODO:如果需要讀取到AA及以後列,請自行處理

      if(strlen($columnCount)>=2){

        $columnCount = 'Z';

      }

      $dataArr = array();

      $data = array();

      //行數迴圈

      for ($row = 1; $row <= $rowCount; $row++){

        //列數迴圈 , 列數是以A列開始

        for ($column = 'A'; $column <= $columnCount; $column++) {

          $dataArr[$column] = $objPHPExcel->getActiveSheet()->getCell($column.$row)->getValue();

          //檢視是否為公式取值

          if(substr($dataArr[$column],0,1) == '='){

            $dataArr[$column] = $objPHPExcel->getActiveSheet()->getCell($column.$row)->getOldCalculatedValue();

          }

        }

        $data[$row] = $dataArr;

        $dataArr = NULL;

      }

      //預設對應的k對應sheet表名

      $info['data'][$k] = $data;

    }else{

      $info['data'][$k] = array();

    }
  }

  $info['totalRowsCount'] = $totalRowCount;

  return $info;

}

********************寫入表格內容--使用時根據實際內容做修改***************************

/**

 * 匯出資料 TODO:使用時根據實際業務邏輯進行邏輯調整

 * @param $fileName   檔名

 * @param $columnName  設定的列名 (陣列)

 * @param $expTableData 匯出的data

 */

private static function _exportExcel($fileName,$columnName,$expTableData){



  $objPHPExcel = new \PHPExcel();



  $sheets = $expTableData['sheets'];

  $data  = $expTableData['data'];



  foreach ($sheets as $k => $v){

    if($k != 0){

      $objPHPExcel->createSheet();

    }

    //設定sheet名稱

    $objPHPExcel->setactivesheetindex($k)->setTitle($v['name']);

    //示例:設定寬度

    $objPHPExcel->setActiveSheetIndex($k)->getColumnDimension('C')->setWidth(25);

    //行數計數器 邏輯預設有主標題和列名 根據實際情況修改

    $row = 3;

    $status = false;

    if(!empty($data) && is_array($data) && count($data) > 0){

      foreach ($data as $mk => $mv){

        foreach ($columnName as $ck => $cv) {

          if($mk == 0) {

            //合併,設定主標題

            $objPHPExcel->getActiveSheet($k)->mergeCells('A1:Y1')->setCellValue('A1','資訊登記表')->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

            //設定標題

            $objPHPExcel->getActiveSheet($k)->setCellValue($ck . $columnName[$ck]['num'], $columnName[$ck]['name']);

          }

          //判斷是否屬於該組

          if($mv['sheet_sheet_id'] == $v['id']){

            //獲取當前單元格的值,TODO:_getCurrentCellValue方法為自己封裝 處理當前單元格資料 <自己寫哦>

            $value = self::_getCurrentCellValue($ck,$mv,$row-2);

            //拼接資料

            $objPHPExcel->getActiveSheet($k)->setCellValue($ck . $row, $value);

            $status = true;

          }

        }

        if($status){

          $row++;

          $status = false;

        }

      }

    }else{

      foreach ($columnName as $ck => $cv) {

        //合併,設定主標題

        $objPHPExcel->getActiveSheet($k)->mergeCells('A1:Y1')->setCellValue('A1','資訊登記表')->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

        //設定標題

        $objPHPExcel->getActiveSheet($k)->setCellValue($ck . $columnName[$ck]['num'], $columnName[$ck]['name']);

      }

    }

  }

  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/vnd.ms-execl');

  header('Content-Type:application/octet-stream');

  header('Content-Type:application/download');

  header("Content-Disposition:attachment;filename=".$fileName.".xls");

  header('Content-Transfer-Encoding:binary');

  $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

  $objWriter->save('php://output');

}

****************************經常使用方法**************************************

//獲取sheet表格數目

$objPHPExcel->getSheetCount();

//獲取sheet表格名稱

$objPHPExcel->getSheetNames();

//設定$k為活動sheet $k 為正整數 [0,+∞)

$objPHPExcel->setActiveSheetIndex($k);

//獲取表格行數 

$objPHPExcel->getActiveSheet()->getHighestRow();//若沒有設定活動sheet 那麼以下的操作都需要getActiveSheet($k)

//獲取表格列數

$objPHPExcel->getActiveSheet()->getHighestColumn();

//獲取單元格值(無公式) $column -> 列 $row -> 行 如:A2

$objPHPExcel->getActiveSheet()->getCell($column.$row)->getValue();

//獲取單元格值(有公式) $column -> 列 $row -> 行 如:A2

$objPHPExcel->getActiveSheet()->getCell($column.$row)->getOldCalculatedValue();//getCalculatedValue新版本已不推薦使用



//建立sheet

$objPHPExcel->createSheet();

//設定sheet名稱

$objPHPExcel->setactivesheetindex($k)->setTitle('sheetDIY');

//設定cell寬度 //$column : 列 如:A

$objPHPExcel->setActiveSheetIndex($k)->getColumnDimension($column)->setWidth(25); //指定寬度

$objPHPExcel->setActiveSheetIndex($k)->getColumnDimension($column)->setAutoSize(true); //自動調整

//設定行高度

$objPHPExcel->getActiveSheet($k)->getDefaultRowDimension($column)->setRowHeight(30);

//設定單元格不以科學計數法顯示 如果沒有生效 將過長字串拼接空格即可

$objPHPExcel->setActiveSheetIndex($k)->getStyle($column)->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);

//分離單元格

$objPHPExcel->getActiveSheet($k)->unmergeCells('A1:E22');

//合併單元格

$objPHPExcel->getActiveSheet($k)->mergeCells('A1:Y1')->setCellValue('A1','資訊登記表');

//合併單元格居中顯示

$objPHPExcel->getActiveSheet($k)->mergeCells('A1:Y1')->setCellValue('A1','資訊登記表')->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

//單元格設定值 $column:列 , $row:行 如:A2

$objPHPExcel->getActiveSheet($k)->setCellValue($column . $row, $value);

//寫入資料匯出內容

$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

$objWriter->save('php://output');

****************************匯出header頭**************************************

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/vnd.ms-execl');

header('Content-Type:application/octet-stream');

header('Content-Type:application/download');

header("Content-Disposition:attachment;filename=".$fileName.".xls");

header('Content-Transfer-Encoding:binary');



//如果不使用PHPExcel匯出 則使用readfile($filePath) //$filePath:需要匯出檔案路徑

***************************其他方法********************************************

//Set properties 設定檔案屬性

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");

$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");

$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");

$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");

$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");

$objPHPExcel->getProperties()->setCategory("Test result file");



//日期格式化

$objPHPExcel->getActiveSheet()->setCellValue('D1', time());

$objPHPExcel->getActiveSheet()->getStyle('D1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);



//Add comment 添加註釋

$objPHPExcel->getActiveSheet()->getComment('E11')->setAuthor('PHPExcel');

$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('PHPExcel:');

$objCommentRichText->getFont()->setBold(true);

$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun("\r\n");

$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('Total amount on the current invoice, excluding VAT.');



//Set fonts 設定字型

$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setName('Candara');

$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(20);

$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);

$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);

$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);

 

//Set alignments 設定對齊

$objPHPExcel->getActiveSheet()->getStyle('D11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);

$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);

$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

$objPHPExcel->getActiveSheet()->getStyle('A3')->getAlignment()->setWrapText(true);

 

//Set column borders 設定列邊框

$objPHPExcel->getActiveSheet()->getStyle('A4')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

$objPHPExcel->getActiveSheet()->getStyle('A10')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

$objPHPExcel->getActiveSheet()->getStyle('E10')->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);

$objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);

 

//Set border colors 設定邊框顏色

$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getLeft()->getColor()->setARGB('FF993300');

$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getTop()->getColor()->setARGB('FF993300');

$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getBottom()->getColor()->setARGB('FF993300');

$objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getRight()->getColor()->setARGB('FF993300');

 

//Set fills 設定填充

$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);

$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB('FF808080');

 

//Add a hyperlink to the sheet 新增連結

$objPHPExcel->getActiveSheet()->setCellValue('E26', 'www.phpexcel.net');

$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setUrl('http://www.phpexcel.net');

$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setTooltip('Navigate to website');

$objPHPExcel->getActiveSheet()->getStyle('E26')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);

 

//Add a drawing to the worksheet 新增圖片

$objDrawing = new PHPExcel_Worksheet_Drawing();

$objDrawing->setName('Logo');

$objDrawing->setDescription('Logo');

$objDrawing->setPath('./images/officelogo.jpg');

$objDrawing->setHeight(36);

$objDrawing->setCoordinates('B15');

$objDrawing->setOffsetX(110);

$objDrawing->setRotation(25);

$objDrawing->getShadow()->setVisible(true);

$objDrawing->getShadow()->setDirection(45);

$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());

 

//inserting and removing rows and columns 插入/刪除  行/列

$objPHPExcel->getActiveSheet()->insertNewRowBefore(6, 10);

$objPHPExcel->getActiveSheet()->removeRow(6, 10);

$objPHPExcel->getActiveSheet()->insertNewColumnBefore('E', 5);

$objPHPExcel->getActiveSheet()->removeColumn('E', 5);

 

//Add conditional formatting 新增條件格式

$objConditional1 = new PHPExcel_Style_Conditional();

$objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS);

$objConditional1->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN);

$objConditional1->setCondition('0');

$objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

$objConditional1->getStyle()->getFont()->setBold(true);

 

//Set autofilter 自動過濾

$objPHPExcel->getActiveSheet()->setAutoFilter('A1:C9');

 

//Hide "Phone" and "fax" column 隱藏列

$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false);

$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false);

 

//Set document security 設定文件安全

$objPHPExcel->getSecurity()->setLockWindows(true);

$objPHPExcel->getSecurity()->setLockStructure(true);

$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel");

 

//Set sheet security 設定工作表安全

$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel');

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);// This should be enabled in order to enable any of the following!

$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);

$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true);

$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);

 

//Calculated data 計算

echo 'Value of B14 [=COUNT(B2:B12)]: ' . $objPHPExcel->getActiveSheet()->getCell('B14')->getCalculatedValue() . "\r\n";

 

//Set outline levels

$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1);

$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setVisible(false);

$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setCollapsed(true);

 

//Set data validation 驗證輸入值

$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')->getDataValidation();

$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE );

$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP );

$objValidation->setAllowBlank(true);

$objValidation->setShowInputMessage(true);

$objValidation->setShowErrorMessage(true);

$objValidation->setErrorTitle('Input error');

$objValidation->setError('Number is not allowed!');

$objValidation->setPromptTitle('Allowed input');

$objValidation->setPrompt('Only numbers between 10 and 20 are allowed.');

$objValidation->setFormula1(10);

$objValidation->setFormula2(20);

$objPHPExcel->getActiveSheet()->getCell('B3')->setDataValidation($objValidation);

 

//Create a new worksheet, after the default sheet 建立新的工作標籤

$objPHPExcel->createSheet();

$objPHPExcel->setActiveSheetIndex(1);

 

//Set header and footer. When no different headers for odd/even are used, odd header is assumed. 頁首頁尾

$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&C&HPlease treat this document as confidential!');

$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N');

 

//Set page orientation and size 方向大小

$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);

$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

 

//Rename sheet 重新命名工作表標籤

$objPHPExcel->getActiveSheet()->setTitle('Simple');

 

//設定為當前活動sheet

$objPHPExcel->setActiveSheetIndex(0);

 

//Save Excel 2007 file 儲存

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

$objWriter->save(str_replace('.php', '.xlsx', __FILE__));

 

//Save Excel 5 file 儲存

require_once('Classes/PHPExcel/Writer/Excel5.php');

$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);

$objWriter->save(str_replace('.php', '.xls', __FILE__));

 

//1.6.2新版儲存

require_once('Classes/PHPExcel/IOFactory.php');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

$objWriter->save(str_replace('.php', '.xls', __FILE__));



//讀excel

//Include class

require_once('Classes/PHPExcel/Reader/Excel2007.php');

$objReader = new PHPExcel_Reader_Excel2007;

$objPHPExcel = $objReader->load("05featuredemo.xlsx");



//讀寫csv

require_once("05featuredemo.inc.php");

require_once('Classes/PHPExcel/Writer/CSV.php');

require_once('Classes/PHPExcel/Reader/CSV.php');

require_once('Classes/PHPExcel/Writer/Excel2007.php');

//Write to CSV format 寫

$objWriter = new PHPExcel_Writer_CSV($objPHPExcel);

$objWriter->setDelimiter(';');

$objWriter->setEnclosure('');

$objWriter->setLineEnding("\r\n");

$objWriter->setSheetIndex(0);

$objWriter->save(str_replace('.php', '.csv', __FILE__));

//Read from CSV format 讀

$objReader = new PHPExcel_Reader_CSV();

$objReader->setDelimiter(';');

$objReader->setEnclosure('');

$objReader->setLineEnding("\r\n");

$objReader->setSheetIndex(0);

$objPHPExcelFromCSV = $objReader->load(str_replace('.php', '.csv', __FILE__));

//Write to Excel2007 format

$objWriter2007 = new PHPExcel_Writer_Excel2007($objPHPExcelFromCSV);

$objWriter2007->save(str_replace('.php', '.xlsx', __FILE__));



寫html

require_once("05featuredemo.inc.php");

require_once('Classes/PHPExcel/Writer/HTML.php');

//Write to HTML format

$objWriter = new PHPExcel_Writer_HTML($objPHPExcel);

$objWriter->setSheetIndex(0);

$objWriter->save(str_replace('.php', '.htm', __FILE__));



//寫pdf

require_once("05featuredemo.inc.php");

require_once('Classes/PHPExcel/IOFactory.php');

//Write to PDF format

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');

$objWriter->setSheetIndex(0);

$objWriter->save(str_replace('.php', '.pdf', __FILE__));

//Echo memory peak usage

echo date('H:i:s') . " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB\r\n";

 

 

-------------- 全文end -------------