PHP匯出EXCEL快速開發指南–PHPEXCEL

來源:互聯網
上載者:User

PHP匯出EXCEL快速開發指南


phpexcel有專有的開發文檔,詳細操作請參考其開發文檔,本文檔只是對其在使用上作了最佳化整合,便於在新項目中快速開發。


phpexcel組建檔案同樣有兩種方式,一種方式為直接輸出,一種方式為產生靜態檔案。


直接輸出:


主檔案為(class目錄的同目錄檔案):

<?php 


include("./class/class.php"); // 包含class的基本標頭檔

include("./class/phpexcel/PHPExcel.php");// 產生excel的基本類定義(注意檔案名稱的大小寫)


// 如果直接輸出excel檔案,則要包含此檔案

include("./class/phpexcel/PHPExcel/IOFactory.php");


// 建立phpexcel對象,此對象包含輸出的內容及格式

$m_objPHPExcel = new PHPExcel();


// 模板檔案,為了實現格式與內容分離,有關輸出檔案具體內容實現在模板檔案中

// 模板檔案將對象$m_objPHPExcel進行操作

include("./include/excel.php");


// 輸出檔案的類型,excel或pdf

$m_exportType = "excel";


$m_strOutputExcelFileName= date('Y-m-j_H_i_s').".xls"; // 輸出EXCEL檔案名稱

$m_strOutputPdfFileName= date('Y-m-j_H_i_s').".pdf"; // 輸出PDF檔案名稱


// PHPExcel_IOFactory, 輸出excel

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


// 如果需要輸出EXCEL格式

if($m_exportType=="excel"){

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


// 從瀏覽器直接輸出$m_strOutputExcelFileName

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-excel;");

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

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

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

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

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


}


// 如果需要輸出PDF格式

if($m_exportType=="pdf"){

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

$objWriter->setSheetIndex(0);


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/pdf");

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

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

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

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

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


}

?>



模板檔案內容(附加常用操作)

<?php 


global $m_objPHPExcel; // 由外部檔案定義


// 設定基本屬性

$m_objPHPExcel->getProperties()->setCreator("Sun Star Data Center")

->setLastModifiedBy("Sun Star Data Center")

->setTitle("Microsoft Office Excel Document")

->setSubject("Test Data Report -- From Sunstar Data Center")

->setDescription("LD Test Data Report, Generate by Sunstar Data Center")

->setKeywords("sunstar ld report")

->setCategory("Test result file");


// 建立多個工作薄

$sheet1 = $m_objPHPExcel->createSheet();

$sheet2 = $m_objPHPExcel->createSheet();


// 通過操作索引即可操作對應的工作薄

// 只需設定要操作的活頁簿索引為當前活動活頁簿,如

// $m_objPHPExcel->setActiveSheetIndex(0);


// 設定第一個活頁簿為活動活頁簿

$m_objPHPExcel->setActiveSheetIndex(0);


// 設定活動活頁簿名稱

// 如果是中文一定要使用iconv函數轉換編碼

$m_objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', '測試活頁簿'));


// 設定預設字型和大小

$m_objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', '宋體'));

$m_objPHPExcel->getDefaultStyle()->getFont()->setSize(10);

// 設定一列的寬度

$m_objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);



// 設定一行的高度

$m_objPHPExcel->getActiveSheet()->getRowDimension('6')->setRowHeight(30);




// 合併儲存格

$m_objPHPExcel->getActiveSheet()->mergeCells('A1:P1');


// 定義一個樣式,加粗,置中

$styleArray1 = array(

'font' => array(

'bold' => true,

'color'=>array(

'argb' => '00000000',

),

),


'alignment' => array(

'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,

),

);


// 將樣式應用於A1儲存格

$m_objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray($styleArray1);


// 設定儲存格樣式(黑色字型)

$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLACK); // 黑色


// 設定儲存格格式(背景)

$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getFill()->getStartColor()->setARGB('00ff99cc'); // 將背景設定為淺粉色


// 設定儲存格格式(數字格式)

$m_objPHPExcel->getActiveSheet()->getStyle('F1')->getNumberFormat()->setFormatCode('0.000');


// 給特定儲存格中寫入內容

$m_objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello Baby');


// 設定儲存格樣式(置中)

$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);


// 給儲存格中放入圖片, 將資料圖片放在J1儲存格內

$objDrawing = new PHPExcel_Worksheet_Drawing();

$objDrawing->setName('Logo');

$objDrawing->setDescription('Logo');

$objDrawing->setPath("../logo.jpg");// 圖片路徑,只能是相對路徑
$objDrawing->setWidth(400); // 圖片寬度

$objDrawing->setHeight(123); // 圖片高度

$objDrawing->setCoordinates('J1');//儲存格


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


// 設定A5儲存格內容並增加超連結

$m_objPHPExcel->getActiveSheet()->setCellValue('A5', iconv('gbk', 'utf-8', '超連結keiyi.com'));

$m_objPHPExcel->getActiveSheet()->getCell('A5')->getHyperlink()->setUrl('http://www.keiyi.com/');


?>




在伺服器端產生靜態檔案


相比直接產生,這兩種方法的主要區別是產生格式的不同,模板檔案完全相同,下邊是一個在上例基礎上更改後的樣子,注意與上例的區別。



<?php 


// 包含class的基本標頭檔

include("./class/class.php");


// 產生excel的基本類定義(注意檔案名稱的大小寫)

include("./class/phpexcel/PHPExcel.php");

// 包含寫Excel5格式的檔案,如果需要產生excel2007的檔案,包含對應的Writer即可

include("./class/phpexcel/PHPExcel/Writer/Excel5.php");

// 包含寫PDF格式檔案

include("./class/phpexcel/PHPExcel/Writer/PDF.php");


// 建立phpexcel對象,此對象包含輸出的內容及格式

$m_objPHPExcel = new PHPExcel();


// 模板檔案,為了實現格式與內容分離,有關輸出檔案具體內容實現在模板檔案中

// 模板檔案將對象$m_objPHPExcel進行操作

include("./include/excel.php");


// 輸出檔案的類型,excel或pdf

$m_exportType = "pdf";


$m_strOutputExcelFileName= date('Y-m-j_H_i_s').".xls"; // 輸出EXCEL檔案名稱

$m_strOutputPdfFileName= date('Y-m-j_H_i_s').".pdf"; // 輸出PDF檔案名稱


// 輸出檔案儲存路徑,此路徑必須可寫

$m_strOutputPath = "./output/";



// 如果需要輸出EXCEL格式

if($m_exportType=="excel"){

$objWriter = new PHPExcel_Writer_Excel5($m_objPHPExcel);

$objWriter->save($m_strOutputPath.$m_strOutputExcelFileName); 


}


// 如果需要輸出PDF格式

if($m_exportType=="pdf"){

$objWriter = new PHPExcel_Writer_PDF($m_objPHPExcel);

$objWriter->save($m_strOutputPath.$m_strOutputPdfFileName); 


}

?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.