PHP導(dǎo)出EXCEL快速開發(fā)指南--PHPEXCEL的使用詳解
更新時(shí)間:2013年06月03日 17:34:51 作者:
本篇文章是對(duì)PHPEXCEL的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
PHP導(dǎo)出EXCEL快速開發(fā)指南
phpexcel有專有的開發(fā)文檔,詳細(xì)操作請(qǐng)參考其開發(fā)文檔,本文檔只是對(duì)其在使用上作了優(yōu)化整合,便于在新項(xiàng)目中快速開發(fā)。
phpexcel生成文件同樣有兩種方式,一種方式為直接輸出,一種方式為生成靜態(tài)文件。
直接輸出:
主文件為(class目錄的同目錄文件):
<?php
include("./class/class.php"); // 包含class的基本頭文件
include("./class/phpexcel/PHPExcel.php"); // 生成excel的基本類定義(注意文件名的大小寫)
// 如果直接輸出excel文件,則要包含此文件
include("./class/phpexcel/PHPExcel/IOFactory.php");
// 創(chuàng)建phpexcel對(duì)象,此對(duì)象包含輸出的內(nèi)容及格式
$m_objPHPExcel = new PHPExcel();
// 模板文件,為了實(shí)現(xiàn)格式與內(nèi)容分離,有關(guān)輸出文件具體內(nèi)容實(shí)現(xiàn)在模板文件中
// 模板文件將對(duì)象$m_objPHPExcel進(jìn)行操作
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");
}
?>
模板文件內(nèi)容(附加常用操作)
<?php
global $m_objPHPExcel; // 由外部文件定義
// 設(shè)置基本屬性
$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");
// 創(chuàng)建多個(gè)工作薄
$sheet1 = $m_objPHPExcel->createSheet();
$sheet2 = $m_objPHPExcel->createSheet();
// 通過操作索引即可操作對(duì)應(yīng)的工作薄
// 只需設(shè)置要操作的工作簿索引為當(dāng)前活動(dòng)工作簿,如
// $m_objPHPExcel->setActiveSheetIndex(0);
// 設(shè)置第一個(gè)工作簿為活動(dòng)工作簿
$m_objPHPExcel->setActiveSheetIndex(0);
// 設(shè)置活動(dòng)工作簿名稱
// 如果是中文一定要使用iconv函數(shù)轉(zhuǎn)換編碼
$m_objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', '測(cè)試工作簿'));
// 設(shè)置默認(rèn)字體和大小
$m_objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', '宋體'));
$m_objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
// 設(shè)置一列的寬度
$m_objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
// 設(shè)置一行的高度
$m_objPHPExcel->getActiveSheet()->getRowDimension('6')->setRowHeight(30);
// 合并單元格
$m_objPHPExcel->getActiveSheet()->mergeCells('A1:P1');
// 定義一個(gè)樣式,加粗,居中
$styleArray1 = array(
'font' => array(
'bold' => true,
'color'=>array(
'argb' => '00000000',
),
),
'alignment' => array(
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
),
);
// 將樣式應(yīng)用于A1單元格
$m_objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray($styleArray1);
// 設(shè)置單元格樣式(黑色字體)
$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLACK); // 黑色
// 設(shè)置單元格格式(背景)
$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getFill()->getStartColor()->setARGB('00ff99cc'); // 將背景設(shè)置為淺粉色
// 設(shè)置單元格格式(數(shù)字格式)
$m_objPHPExcel->getActiveSheet()->getStyle('F1')->getNumberFormat()->setFormatCode('0.000');
// 給特定單元格中寫入內(nèi)容
$m_objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello Baby');
// 設(shè)置單元格樣式(居中)
$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 給單元格中放入圖片, 將數(shù)據(jù)圖片放在J1單元格內(nèi)
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath("../logo.jpg"); // 圖片路徑,只能是相對(duì)路徑
$objDrawing->setWidth(400); // 圖片寬度
$objDrawing->setHeight(123); // 圖片高度
$objDrawing->setCoordinates('J1');//單元格
$objDrawing->setWorksheet($m_objPHPExcel->getActiveSheet());
// 設(shè)置A5單元格內(nèi)容并增加超鏈接
$m_objPHPExcel->getActiveSheet()->setCellValue('A5', iconv('gbk', 'utf-8', '超鏈接keiyi.com'));
$m_objPHPExcel->getActiveSheet()->getCell('A5')->getHyperlink()->setUrl('http://www.keiyi.com/');
?>
在服務(wù)器端生成靜態(tài)文件
相比直接生成,這兩種方法的主要區(qū)別是生成格式的不同,模板文件完全相同,下邊是一個(gè)在上例基礎(chǔ)上更改后的樣子,注意與上例的區(qū)別。
<?php
// 包含class的基本頭文件
include("./class/class.php");
// 生成excel的基本類定義(注意文件名的大小寫)
include("./class/phpexcel/PHPExcel.php");
// 包含寫Excel5格式的文件,如果需要生成excel2007的文件,包含對(duì)應(yīng)的Writer即可
include("./class/phpexcel/PHPExcel/Writer/Excel5.php");
// 包含寫PDF格式文件
include("./class/phpexcel/PHPExcel/Writer/PDF.php");
// 創(chuàng)建phpexcel對(duì)象,此對(duì)象包含輸出的內(nèi)容及格式
$m_objPHPExcel = new PHPExcel();
// 模板文件,為了實(shí)現(xiàn)格式與內(nèi)容分離,有關(guān)輸出文件具體內(nèi)容實(shí)現(xiàn)在模板文件中
// 模板文件將對(duì)象$m_objPHPExcel進(jìn)行操作
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);
}
?>
phpexcel有專有的開發(fā)文檔,詳細(xì)操作請(qǐng)參考其開發(fā)文檔,本文檔只是對(duì)其在使用上作了優(yōu)化整合,便于在新項(xiàng)目中快速開發(fā)。
phpexcel生成文件同樣有兩種方式,一種方式為直接輸出,一種方式為生成靜態(tài)文件。
直接輸出:
主文件為(class目錄的同目錄文件):
復(fù)制代碼 代碼如下:
<?php
include("./class/class.php"); // 包含class的基本頭文件
include("./class/phpexcel/PHPExcel.php"); // 生成excel的基本類定義(注意文件名的大小寫)
// 如果直接輸出excel文件,則要包含此文件
include("./class/phpexcel/PHPExcel/IOFactory.php");
// 創(chuàng)建phpexcel對(duì)象,此對(duì)象包含輸出的內(nèi)容及格式
$m_objPHPExcel = new PHPExcel();
// 模板文件,為了實(shí)現(xiàn)格式與內(nèi)容分離,有關(guān)輸出文件具體內(nèi)容實(shí)現(xiàn)在模板文件中
// 模板文件將對(duì)象$m_objPHPExcel進(jìn)行操作
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");
}
?>
模板文件內(nèi)容(附加常用操作)
復(fù)制代碼 代碼如下:
<?php
global $m_objPHPExcel; // 由外部文件定義
// 設(shè)置基本屬性
$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");
// 創(chuàng)建多個(gè)工作薄
$sheet1 = $m_objPHPExcel->createSheet();
$sheet2 = $m_objPHPExcel->createSheet();
// 通過操作索引即可操作對(duì)應(yīng)的工作薄
// 只需設(shè)置要操作的工作簿索引為當(dāng)前活動(dòng)工作簿,如
// $m_objPHPExcel->setActiveSheetIndex(0);
// 設(shè)置第一個(gè)工作簿為活動(dòng)工作簿
$m_objPHPExcel->setActiveSheetIndex(0);
// 設(shè)置活動(dòng)工作簿名稱
// 如果是中文一定要使用iconv函數(shù)轉(zhuǎn)換編碼
$m_objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', '測(cè)試工作簿'));
// 設(shè)置默認(rèn)字體和大小
$m_objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', '宋體'));
$m_objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
// 設(shè)置一列的寬度
$m_objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
// 設(shè)置一行的高度
$m_objPHPExcel->getActiveSheet()->getRowDimension('6')->setRowHeight(30);
// 合并單元格
$m_objPHPExcel->getActiveSheet()->mergeCells('A1:P1');
// 定義一個(gè)樣式,加粗,居中
$styleArray1 = array(
'font' => array(
'bold' => true,
'color'=>array(
'argb' => '00000000',
),
),
'alignment' => array(
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
),
);
// 將樣式應(yīng)用于A1單元格
$m_objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray($styleArray1);
// 設(shè)置單元格樣式(黑色字體)
$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLACK); // 黑色
// 設(shè)置單元格格式(背景)
$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getFill()->getStartColor()->setARGB('00ff99cc'); // 將背景設(shè)置為淺粉色
// 設(shè)置單元格格式(數(shù)字格式)
$m_objPHPExcel->getActiveSheet()->getStyle('F1')->getNumberFormat()->setFormatCode('0.000');
// 給特定單元格中寫入內(nèi)容
$m_objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello Baby');
// 設(shè)置單元格樣式(居中)
$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 給單元格中放入圖片, 將數(shù)據(jù)圖片放在J1單元格內(nèi)
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath("../logo.jpg"); // 圖片路徑,只能是相對(duì)路徑
$objDrawing->setWidth(400); // 圖片寬度
$objDrawing->setHeight(123); // 圖片高度
$objDrawing->setCoordinates('J1');//單元格
$objDrawing->setWorksheet($m_objPHPExcel->getActiveSheet());
// 設(shè)置A5單元格內(nèi)容并增加超鏈接
$m_objPHPExcel->getActiveSheet()->setCellValue('A5', iconv('gbk', 'utf-8', '超鏈接keiyi.com'));
$m_objPHPExcel->getActiveSheet()->getCell('A5')->getHyperlink()->setUrl('http://www.keiyi.com/');
?>
在服務(wù)器端生成靜態(tài)文件
相比直接生成,這兩種方法的主要區(qū)別是生成格式的不同,模板文件完全相同,下邊是一個(gè)在上例基礎(chǔ)上更改后的樣子,注意與上例的區(qū)別。
復(fù)制代碼 代碼如下:
<?php
// 包含class的基本頭文件
include("./class/class.php");
// 生成excel的基本類定義(注意文件名的大小寫)
include("./class/phpexcel/PHPExcel.php");
// 包含寫Excel5格式的文件,如果需要生成excel2007的文件,包含對(duì)應(yīng)的Writer即可
include("./class/phpexcel/PHPExcel/Writer/Excel5.php");
// 包含寫PDF格式文件
include("./class/phpexcel/PHPExcel/Writer/PDF.php");
// 創(chuàng)建phpexcel對(duì)象,此對(duì)象包含輸出的內(nèi)容及格式
$m_objPHPExcel = new PHPExcel();
// 模板文件,為了實(shí)現(xiàn)格式與內(nèi)容分離,有關(guān)輸出文件具體內(nèi)容實(shí)現(xiàn)在模板文件中
// 模板文件將對(duì)象$m_objPHPExcel進(jìn)行操作
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);
}
?>
您可能感興趣的文章:
- 利用phpExcel實(shí)現(xiàn)Excel數(shù)據(jù)的導(dǎo)入導(dǎo)出(全步驟詳細(xì)解析)
- ThinkPHP使用PHPExcel實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入導(dǎo)出完整實(shí)例
- phpExcel導(dǎo)出大量數(shù)據(jù)出現(xiàn)內(nèi)存溢出錯(cuò)誤的解決方法
- 利用phpexcel把excel導(dǎo)入數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)導(dǎo)出excel實(shí)現(xiàn)
- 使用PHPExcel實(shí)現(xiàn)數(shù)據(jù)批量導(dǎo)出為excel表格的方法(必看)
- 完美解決phpexcel導(dǎo)出到xls文件出現(xiàn)亂碼的問題
- php實(shí)現(xiàn)利用phpexcel導(dǎo)出數(shù)據(jù)
- Yii中使用PHPExcel導(dǎo)出Excel的方法
- PHPExcel導(dǎo)出2003和2007的excel文檔功能示例
- 使用PHPExcel導(dǎo)出Excel表
相關(guān)文章
PHP定時(shí)任務(wù)延緩執(zhí)行的實(shí)現(xiàn)
這篇文章主要介紹了PHP定時(shí)任務(wù)延緩執(zhí)行的實(shí)現(xiàn),很簡(jiǎn)單,但很實(shí)用,需要的朋友可以參考下面的示例2014-10-10php安裝ssh2擴(kuò)展的方法【Linux平臺(tái)】
這篇文章主要介紹了php安裝ssh2擴(kuò)展的方法,結(jié)合實(shí)例形式演示了基于Linux平臺(tái)的ssh2擴(kuò)展安裝步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-07-07php實(shí)現(xiàn)36進(jìn)制與10進(jìn)制轉(zhuǎn)換功能示例
這篇文章主要介紹了php實(shí)現(xiàn)36進(jìn)制與10進(jìn)制轉(zhuǎn)換功能,結(jié)合實(shí)例形式分析了php數(shù)值運(yùn)算與字符串操作的相關(guān)技巧,需要的朋友可以參考下2017-01-01php實(shí)現(xiàn)壓縮合并js的方法【附demo源碼下載】
這篇文章主要介紹了php實(shí)現(xiàn)壓縮合并js的方法,涉及php壓縮文件類JSMin的相關(guān)調(diào)用與使用技巧,并附帶了完整的demo源碼供讀者下載參考,需要的朋友可以參考下2016-09-09