搜尋引擎網路爬蟲,自己控制被加入顯示的內容。
簡單說明一下,先設定需過濾的搜尋引擎為陣列形態,
然後在進行回圈比對 搜尋引擎,之後再來比對不想顯示的內容。
Script
PHPExcel
PHPExcel 類型查詢
例如 框線類型
$objPHPExcel->getActiveSheet()->getStyle('H2')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_DASHED);
查詢還有哪些寬線類型
Classes/PHPExcel/Style/Border.php
/* Border style */
const BORDER_NONE = 'none';
const BORDER_DASHDOT = 'dashDot';
const BORDER_DASHDOTDOT = 'dashDotDot';
const BORDER_DASHED = 'dashed';
const BORDER_DOTTED = 'dotted';
const BORDER_DOUBLE = 'double';
const BORDER_HAIR = 'hair';
const BORDER_MEDIUM = 'medium';
const BORDER_MEDIUMDASHDOT = 'mediumDashDot';
const BORDER_MEDIUMDASHDOTDOT = 'mediumDashDotDot';
const BORDER_MEDIUMDASHED = 'mediumDashed';
const BORDER_SLANTDASHDOT = 'slantDashDot';
const BORDER_THICK = 'thick';
const BORDER_THIN = 'thin';
$objPHPExcel->getActiveSheet()->getStyle('H2')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_DASHED);
查詢還有哪些寬線類型
Classes/PHPExcel/Style/Border.php
/* Border style */
const BORDER_NONE = 'none';
const BORDER_DASHDOT = 'dashDot';
const BORDER_DASHDOTDOT = 'dashDotDot';
const BORDER_DASHED = 'dashed';
const BORDER_DOTTED = 'dotted';
const BORDER_DOUBLE = 'double';
const BORDER_HAIR = 'hair';
const BORDER_MEDIUM = 'medium';
const BORDER_MEDIUMDASHDOT = 'mediumDashDot';
const BORDER_MEDIUMDASHDOTDOT = 'mediumDashDotDot';
const BORDER_MEDIUMDASHED = 'mediumDashed';
const BORDER_SLANTDASHDOT = 'slantDashDot';
const BORDER_THICK = 'thick';
const BORDER_THIN = 'thin';
Script
PHPExcel
php excel类,phpExcel使用方法介绍
下面是总结的几个使用方法
include ‘PHPExcel.php’;
include ‘PHPExcel/Writer/Excel2007.php’;
//或者include ‘PHPExcel/Writer/Excel5.php’; 用于输出.xls的
创建一个excel
$objPHPExcel = new PHPExcel();
保存excel—2007格式
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
//或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式
$objWriter->save(”xxx.xlsx”);
直接输出到浏览器
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
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=”resume.xls”‘);
header(”Content-Transfer-Encoding:binary”);
$objWriter->save(’php://output’);
——————————————————————————————————————–
设置excel的属性:
创建人
$objPHPExcel->getProperties()->setCreator(”Maarten Balliauw”);
最后修改人
$objPHPExcel->getProperties()->setLastModifiedBy(”Maarten Balliauw”);
标题
$objPHPExcel->getProperties()->setTitle(”Office 2007 XLSX Test Document”);
题目
$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”);
——————————————————————————————————————–
设置当前的sheet
$objPHPExcel->setActiveSheetIndex(0);
设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle(’Simple’);
设置单元格的值
$objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘String’);
$objPHPExcel->getActiveSheet()->setCellValue(’A2′, 12);
$objPHPExcel->getActiveSheet()->setCellValue(’A3′, true);
$objPHPExcel->getActiveSheet()->setCellValue(’C5′, ‘=SUM(C2:C4)’);
$objPHPExcel->getActiveSheet()->setCellValue(’B8′, ‘=MIN(B2:C5)’);
合并单元格
$objPHPExcel->getActiveSheet()->mergeCells(’A18:E22′);
分离单元格
$objPHPExcel->getActiveSheet()->unmergeCells(’A28:B28′);
include ‘PHPExcel.php’;
include ‘PHPExcel/Writer/Excel2007.php’;
//或者include ‘PHPExcel/Writer/Excel5.php’; 用于输出.xls的
创建一个excel
$objPHPExcel = new PHPExcel();
保存excel—2007格式
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
//或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式
$objWriter->save(”xxx.xlsx”);
直接输出到浏览器
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
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=”resume.xls”‘);
header(”Content-Transfer-Encoding:binary”);
$objWriter->save(’php://output’);
——————————————————————————————————————–
设置excel的属性:
创建人
$objPHPExcel->getProperties()->setCreator(”Maarten Balliauw”);
最后修改人
$objPHPExcel->getProperties()->setLastModifiedBy(”Maarten Balliauw”);
标题
$objPHPExcel->getProperties()->setTitle(”Office 2007 XLSX Test Document”);
题目
$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”);
——————————————————————————————————————–
设置当前的sheet
$objPHPExcel->setActiveSheetIndex(0);
设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle(’Simple’);
设置单元格的值
$objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘String’);
$objPHPExcel->getActiveSheet()->setCellValue(’A2′, 12);
$objPHPExcel->getActiveSheet()->setCellValue(’A3′, true);
$objPHPExcel->getActiveSheet()->setCellValue(’C5′, ‘=SUM(C2:C4)’);
$objPHPExcel->getActiveSheet()->setCellValue(’B8′, ‘=MIN(B2:C5)’);
合并单元格
$objPHPExcel->getActiveSheet()->mergeCells(’A18:E22′);
分离单元格
$objPHPExcel->getActiveSheet()->unmergeCells(’A28:B28′);
Script
PHPExcel
phpExcel常用方法詳解【附有php導出excel加超級鏈接】
操作excel
1.header
header("Content-Type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=product.xls");
header("Pragma:no-cache");
header("Expires:0");
2.PHPExcel
http://www.codeplex.com/PHPExcel
http://www.phpexcel.net
开发包Tests目录有详细使用实例
支持中文,注意文件编码,文件保存为utf-8
写excel
//Include class
require_once('Classes/PHPExcel.php');
require_once('Classes/PHPExcel/Writer/Excel2007.php');
$objPHPExcel = new PHPExcel();
//Set properties 设置文件属性
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$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");
//Add some data 添加数据
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');//可以指定位置
$objPHPExcel->getActiveSheet()->setCellValue('A2', true);
$objPHPExcel->getActiveSheet()->setCellValue('A3', false);
$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->setCellValue('B3', 2);
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!');
//循环
for($i = 1;$i<200;$i++) {
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $i);
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, 'Test value');
}
//日期格式化
$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.');
//Add rich-text string 添加文字 可设置样式
$objRichText = new PHPExcel_RichText( $objPHPExcel->getActiveSheet()->getCell('A18') );
$objRichText->createText('This invoice is ');
$objPayable = $objRichText->createTextRun('payable within thirty days after the end of the month');
$objPayable->getFont()->setBold(true);
$objPayable->getFont()->setItalic(true);
$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) );
$objRichText->createText(', unless specified otherwise on the invoice.');
//Merge cells 合并分离单元格
$objPHPExcel->getActiveSheet()->mergeCells('A18:E22');
$objPHPExcel->getActiveSheet()->unmergeCells('A18:E22');
//Protect cells 保护单元格
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);//Needs to be set to true in order to enable any worksheet protection!
$objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel');
//Set cell number formats 数字格式化
$objPHPExcel->getActiveSheet()->getStyle('E4')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
$objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle('E4'), 'E5:E13' );
//Set column widths 设置列宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
//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());
//Play around with 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);
//Freeze panes
$objPHPExcel->getActiveSheet()->freezePane('A2');
//Rows to repeat at top
$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1);
//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');
//Set active sheet index to the first sheet, so Excel opens this as the first 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";
1.header
header("Content-Type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=product.xls");
header("Pragma:no-cache");
header("Expires:0");
2.PHPExcel
http://www.codeplex.com/PHPExcel
http://www.phpexcel.net
开发包Tests目录有详细使用实例
支持中文,注意文件编码,文件保存为utf-8
写excel
//Include class
require_once('Classes/PHPExcel.php');
require_once('Classes/PHPExcel/Writer/Excel2007.php');
$objPHPExcel = new PHPExcel();
//Set properties 设置文件属性
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$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");
//Add some data 添加数据
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');//可以指定位置
$objPHPExcel->getActiveSheet()->setCellValue('A2', true);
$objPHPExcel->getActiveSheet()->setCellValue('A3', false);
$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->setCellValue('B3', 2);
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!');
//循环
for($i = 1;$i<200;$i++) {
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $i);
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, 'Test value');
}
//日期格式化
$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.');
//Add rich-text string 添加文字 可设置样式
$objRichText = new PHPExcel_RichText( $objPHPExcel->getActiveSheet()->getCell('A18') );
$objRichText->createText('This invoice is ');
$objPayable = $objRichText->createTextRun('payable within thirty days after the end of the month');
$objPayable->getFont()->setBold(true);
$objPayable->getFont()->setItalic(true);
$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) );
$objRichText->createText(', unless specified otherwise on the invoice.');
//Merge cells 合并分离单元格
$objPHPExcel->getActiveSheet()->mergeCells('A18:E22');
$objPHPExcel->getActiveSheet()->unmergeCells('A18:E22');
//Protect cells 保护单元格
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);//Needs to be set to true in order to enable any worksheet protection!
$objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel');
//Set cell number formats 数字格式化
$objPHPExcel->getActiveSheet()->getStyle('E4')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
$objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle('E4'), 'E5:E13' );
//Set column widths 设置列宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
//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());
//Play around with 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);
//Freeze panes
$objPHPExcel->getActiveSheet()->freezePane('A2');
//Rows to repeat at top
$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1);
//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');
//Set active sheet index to the first sheet, so Excel opens this as the first 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";
http://hi.baidu.com/%C1%B5%C4%E3no%C1%BD%C8%FD%CC%EC/blog/item/79a4dbc46f090ac5d10060d9.html
Script
PHPExcel
總結PHPExcel的用法
總結一下PHPExcel的用法~ <?
//設置PHPExcel類庫的include path//這裡貌似直接include類文件就可以了
# set_include_path('.'. PATH_SEPARATOR .
# 'ExcelPHP_LIBS' . PATH_SEPARATOR .
# get_include_path());
/**
* 以下是使用示例,對於以//// 開頭的行是不同的可選方式,請根據實際需要
* 打開對應行的註釋。
* 如果使用Excel5 ,輸出的內容應該是GBK編碼。
*/
require_once 'PHPExcel.php';
// uncomment
////require_once 'PHPExcel/Writer/Excel5.php';// 用於其他低版本xls
// or
////require_once 'PHPExcel/Writer/Excel2007.php'; // 用於excel-2007 格式
// 創建一個處理對象實例
$objExcel = new PHPExcel();
// 創建文件格式寫入對象實例, uncomment
////$objWriter = new PHPExcel_Writer_Excel5($objExcel);// 用於其他版本格式
// or
////$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用於2007 格式
//$objWriter->setOffice2003Compatibility(true);//實際使用中並無此方法,去掉之後使用正常。可能是版本問題。
//*************************************
//設置文檔基本屬性
$objProps = $objExcel->getProperties();
$objProps->setCreator("Zeal Li");
$objProps->setLastModifiedBy("Zeal Li");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test");
//*************************************
//設置當前的sheet索引,用於後續的內容操作。
//一般只有在使用多個sheet的時候才需要顯示調用。
//缺省情況下,PHPExcel會自動創建第一個sheet被設置SheetIndex=0
$objExcel->setActiveSheetIndex(0);
$objActSheet = $objExcel->getActiveSheet();
//設置當前活動sheet的名稱
$objActSheet->setTitle('測試Sheet');
//*************************************
//設置單元格內容
//
//由PHPExcel根據傳入內容自動判斷單元格內容類型
$objActSheet->setCellValue('A1', '字符串內容');// 字符串內容
$objActSheet->setCellValue('A2', 26);// 數值
$objActSheet->setCellValue('A3', true);// 布爾值
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式
//顯式指定內容類型
$objActSheet->setCellValueExplicit('A5', '847475847857487584', PHPExcel_Cell_DataType::TYPE_STRING);//實際使用中這里報錯,是說沒有PHPExcel_Cell_DataType方法,去掉之後運行正常
//合併單元格
$objActSheet->mergeCells('B1:C22');
//分離單元格
$objActSheet->unmergeCells('B1:C22');
//*************************************
//設置單元格樣式
//
//設置寬度
$objActSheet->getColumnDimension('B')->setAutoSize(true);//這個比較有用,能自適應列寬
$objActSheet->getColumnDimension('A')->setWidth(30);
$objStyleA5 = $objActSheet->getStyle('A5');
//設置單元格內容的數字格式。
//
//如果使用了PHPExcel_Writer_Excel5 來生成內容的話,
//這裡需要注意,在PHPExcel_Style_NumberFormat 類的const 變量定義的
//各種自定義格式化方式中,其它類型都可以正常使用,但當setFormatCode
//為FORMAT_NUMBER 的時候,實際出來的效果被沒有把格式設置為"0"。需要
//修改PHPExcel_Writer_Excel5_Format 類源代碼中的getXf($style) 方法,
//在if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一
//行代碼:
//if($ifmt === '0') $ifmt = 1;
//
//設置格式為PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大數字
//被使用科學記數方式顯示,配合下面的setAutoSize 方法可以讓每一行的內容
//都按原始內容全部顯示出來。
$objStyleA5
&&&&->getNumberFormat()
&&&&->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
//設置字體
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName('Courier New');
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB('FF999999');
//設置對齊方式
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//設置邊框
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//設置填充顏色
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5->getStartColor()->setARGB('FFEEEEEE');
//從指定的單元格複製樣式信息.
$objActSheet->duplicateStyle($objStyleA5, 'B1:C22');
//*************************************
//添加圖片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('ZealImg');
$objDrawing->setDescription('Image inserted by Zeal');
$objDrawing->setPath('./zeali.net.logo.gif');
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('C23');
$objDrawing->setOffsetX(10);
$objDrawing->setRotation(15);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(36);
$objDrawing->setWorksheet($objActSheet);
//添加一個新的worksheet
$objExcel->createSheet();
$objExcel->getSheet(1)->setTitle('測試2');
//保護單元格
$objExcel->getSheet(1)->getProtection()->setSheet(true);
$objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel');
//*************************************
//輸出內容
//
$outputFileName = "output.xls";
//到文件
////$objWriter->save($outputFileName);
//or
//到瀏覽器
////header("Content-Type: application/force-download");
////header("Content-Type: application/octet-stream");
////header("Content-Type: application/download");
////header('Content-Disposition:inline;filename="'.$outputFileName.'"');
////header("Content-Transfer-Encoding: binary");
////header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
////header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT");
////header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
////header("Pragma: no-cache");
////$objWriter->save('php://output');
?>
PS.PHP果然是個好東西~~什麼包都有~~
文章來源:
http://www.5kai.com/post/359/
http://blog.chinaunix.net/u/13284/showart_1071984.html
另:header的用法:http://zhidao.baidu.com/question/8681288.html?si=2
header中各文件類型的表示方法:http://hi.baidu.com/phpyao/blog/item/d4ab4ab11e27ca52092302d4.html
PHP導出EXCEL的不完全總結:http://hi.baidu.com/jricode/blog/item/165a66245cfd023b8744f9bb.htmlChūntiān jiùshì ràng rén chōngmǎn huólì ~yīgè xiàwǔ gǎo dìng liǎo bù shǎo shìqíng.
//設置PHPExcel類庫的include path//這裡貌似直接include類文件就可以了
# set_include_path('.'. PATH_SEPARATOR .
# 'ExcelPHP_LIBS' . PATH_SEPARATOR .
# get_include_path());
/**
* 以下是使用示例,對於以//// 開頭的行是不同的可選方式,請根據實際需要
* 打開對應行的註釋。
* 如果使用Excel5 ,輸出的內容應該是GBK編碼。
*/
require_once 'PHPExcel.php';
// uncomment
////require_once 'PHPExcel/Writer/Excel5.php';// 用於其他低版本xls
// or
////require_once 'PHPExcel/Writer/Excel2007.php'; // 用於excel-2007 格式
// 創建一個處理對象實例
$objExcel = new PHPExcel();
// 創建文件格式寫入對象實例, uncomment
////$objWriter = new PHPExcel_Writer_Excel5($objExcel);// 用於其他版本格式
// or
////$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用於2007 格式
//$objWriter->setOffice2003Compatibility(true);//實際使用中並無此方法,去掉之後使用正常。可能是版本問題。
//*************************************
//設置文檔基本屬性
$objProps = $objExcel->getProperties();
$objProps->setCreator("Zeal Li");
$objProps->setLastModifiedBy("Zeal Li");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test");
//*************************************
//設置當前的sheet索引,用於後續的內容操作。
//一般只有在使用多個sheet的時候才需要顯示調用。
//缺省情況下,PHPExcel會自動創建第一個sheet被設置SheetIndex=0
$objExcel->setActiveSheetIndex(0);
$objActSheet = $objExcel->getActiveSheet();
//設置當前活動sheet的名稱
$objActSheet->setTitle('測試Sheet');
//*************************************
//設置單元格內容
//
//由PHPExcel根據傳入內容自動判斷單元格內容類型
$objActSheet->setCellValue('A1', '字符串內容');// 字符串內容
$objActSheet->setCellValue('A2', 26);// 數值
$objActSheet->setCellValue('A3', true);// 布爾值
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式
//顯式指定內容類型
$objActSheet->setCellValueExplicit('A5', '847475847857487584', PHPExcel_Cell_DataType::TYPE_STRING);//實際使用中這里報錯,是說沒有PHPExcel_Cell_DataType方法,去掉之後運行正常
//合併單元格
$objActSheet->mergeCells('B1:C22');
//分離單元格
$objActSheet->unmergeCells('B1:C22');
//*************************************
//設置單元格樣式
//
//設置寬度
$objActSheet->getColumnDimension('B')->setAutoSize(true);//這個比較有用,能自適應列寬
$objActSheet->getColumnDimension('A')->setWidth(30);
$objStyleA5 = $objActSheet->getStyle('A5');
//設置單元格內容的數字格式。
//
//如果使用了PHPExcel_Writer_Excel5 來生成內容的話,
//這裡需要注意,在PHPExcel_Style_NumberFormat 類的const 變量定義的
//各種自定義格式化方式中,其它類型都可以正常使用,但當setFormatCode
//為FORMAT_NUMBER 的時候,實際出來的效果被沒有把格式設置為"0"。需要
//修改PHPExcel_Writer_Excel5_Format 類源代碼中的getXf($style) 方法,
//在if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一
//行代碼:
//if($ifmt === '0') $ifmt = 1;
//
//設置格式為PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大數字
//被使用科學記數方式顯示,配合下面的setAutoSize 方法可以讓每一行的內容
//都按原始內容全部顯示出來。
$objStyleA5
&&&&->getNumberFormat()
&&&&->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
//設置字體
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName('Courier New');
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB('FF999999');
//設置對齊方式
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//設置邊框
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//設置填充顏色
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5->getStartColor()->setARGB('FFEEEEEE');
//從指定的單元格複製樣式信息.
$objActSheet->duplicateStyle($objStyleA5, 'B1:C22');
//*************************************
//添加圖片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('ZealImg');
$objDrawing->setDescription('Image inserted by Zeal');
$objDrawing->setPath('./zeali.net.logo.gif');
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('C23');
$objDrawing->setOffsetX(10);
$objDrawing->setRotation(15);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(36);
$objDrawing->setWorksheet($objActSheet);
//添加一個新的worksheet
$objExcel->createSheet();
$objExcel->getSheet(1)->setTitle('測試2');
//保護單元格
$objExcel->getSheet(1)->getProtection()->setSheet(true);
$objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel');
//*************************************
//輸出內容
//
$outputFileName = "output.xls";
//到文件
////$objWriter->save($outputFileName);
//or
//到瀏覽器
////header("Content-Type: application/force-download");
////header("Content-Type: application/octet-stream");
////header("Content-Type: application/download");
////header('Content-Disposition:inline;filename="'.$outputFileName.'"');
////header("Content-Transfer-Encoding: binary");
////header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
////header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT");
////header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
////header("Pragma: no-cache");
////$objWriter->save('php://output');
?>
PS.PHP果然是個好東西~~什麼包都有~~
文章來源:
http://www.5kai.com/post/359/
http://blog.chinaunix.net/u/13284/showart_1071984.html
另:header的用法:http://zhidao.baidu.com/question/8681288.html?si=2
header中各文件類型的表示方法:http://hi.baidu.com/phpyao/blog/item/d4ab4ab11e27ca52092302d4.html
PHP導出EXCEL的不完全總結:http://hi.baidu.com/jricode/blog/item/165a66245cfd023b8744f9bb.htmlChūntiān jiùshì ràng rén chōngmǎn huólì ~yīgè xiàwǔ gǎo dìng liǎo bù shǎo shìqíng.
Script
PHPExcel
使用PHPExcel導入Excel
PHPExcel 官方網站: http://www.codeplex.com/PHPExcel
運行環境:
» PHP version 5.2.0 或更高
» PHP extension php_zip 支持 *)
» PHP extension php_xml 支持
» PHP extension php_gd2 支持
*) php_zip 是被PHPExcel_Reader_Excel2007,PHPExcel_Writer_Excel2007 和PHPExcel_Reader_OOCalc所使用。換句話說,如果你需要使用PHPExcel 去處理.xlsx 或者.ods 後綴的文件時,就需要zip 擴展的支持,否則就不需要。
安裝簡介:
安裝過程相當簡單: 把下載到文件中的Classes 文件夾複製你程序中需要使用的地方。
例如:
假如你的網站目錄是/var/www/ 你可以時面新建一個文件夾如/var/www/Classes/ 然後將文件複製進去就可以了,文件的名字如下面的:
/var/www/Classes/PHPExcel.php
/var/www/Classes/PHPExcel/Calculation.php
/var/www/Classes/PHPExcel/Cell.php
原文:http://www.vipaq.com/Detail/view/item/90.html
運行環境:
» PHP version 5.2.0 或更高
» PHP extension php_zip 支持 *)
» PHP extension php_xml 支持
» PHP extension php_gd2 支持
*) php_zip 是被PHPExcel_Reader_Excel2007,PHPExcel_Writer_Excel2007 和PHPExcel_Reader_OOCalc所使用。換句話說,如果你需要使用PHPExcel 去處理.xlsx 或者.ods 後綴的文件時,就需要zip 擴展的支持,否則就不需要。
安裝簡介:
安裝過程相當簡單: 把下載到文件中的Classes 文件夾複製你程序中需要使用的地方。
例如:
假如你的網站目錄是/var/www/ 你可以時面新建一個文件夾如/var/www/Classes/ 然後將文件複製進去就可以了,文件的名字如下面的:
/var/www/Classes/PHPExcel.php
/var/www/Classes/PHPExcel/Calculation.php
/var/www/Classes/PHPExcel/Cell.php
原文:http://www.vipaq.com/Detail/view/item/90.html
Script
PHPExcel
使用phpExcel類導出excel文件相關問題總結
用phpExcel類導出excel文件相關問題總結
Autor:霍小慶time:2011-04-22
總結一下最近使用phpexcel類導出excel 文件時遇到的問題,主要包括三大類:
1.導出時提示找不到文件怎麼辦?
2.導出excel時中文出現亂碼的問題。
3.導出數據量大時,提示內存超過最大值或者運行時間超時的問題。
先看下phpexcel常用的方法總結(摘錄自zeal_blog:http://www.zeali.net/entry/556)
<?
/**
* 如果使用Excel5 ,輸出的內容應該是GBK編碼。
*/
require_once 'PHPExcel.php';
//require_once 'PHPExcel/Writer/Excel5.php'; // 用於其他低版本xls
//require_once 'PHPExcel/Writer/Excel2007.php'; // 用於excel-2007 格式
// 創建一個處理對象實例
$table = new PHPExcel();
//設置文檔基本屬性
$table = $table->getProperties();
$table->setCreator("username");
$table->setLastModifiedBy("username");
$table->setTitle("document_title");
$table->setSubject("");
$table->setDescription("Test document, generated by PHPExcel.");
$table->setKeywords("office excel PHPExcel");
$table->setCategory("Test");
//設置當前的sheet索引,用於後續的內容操作。
//一般只有在使用多個sheet的時候才需要顯示調用。
//缺省情況下,PHPExcel會自動創建第一個sheet被設置SheetIndex=0
$table->setActiveSheetIndex(0);
//設置當前活動sheet的名稱
$table->setActiveSheetIndex(0)->setTitle('test_title');
$ohjActSheet=$table->setActiveSheetIndex(0);
//設置單元格內容
//由PHPExcel根據傳入內容自動判斷單元格內容類型
$objActSheet->setCellValue('A1', '字符串內容'); // 字符串內容
$objActSheet->setCellValue('A2', 26); // 數值
$objActSheet->setCellValue('A3', true); // 布爾值
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式
//顯式指定內容類型
$objActSheet->setCellValueExplicit('A5', '847475847857487584',
PHPExcel_Cell_DataType::TYPE_STRING);
//合併單元格
$objActSheet->mergeCells('B1:C22');
//分離單元格
$objActSheet->unmergeCells('B1:C22');
//設置單元格樣式
$objActSheet->getColumnDimension('B')->setAutoSize(true);
$objActSheet->getColumnDimension('A')->setWidth(30);
$objStyleA5 = $objActSheet->getStyle('A5');
//設置字體
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName('Courier New');
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB('FF999999');
//設置對齊方式
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); //水平
$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //垂直
//設置邊框
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//設置填充顏色
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5->getStartColor()->setARGB('FFEEEEEE');
//從指定的單元格複製樣式信息.
$objActSheet->duplicateStyle($objStyleA5, 'B1:C22');
//添加圖片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('ZealImg');
$objDrawing->setDescription('Image inserted by Zeal');
$objDrawing->setPath('./zeali.net.logo.gif');
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('C23');
$objDrawing->setOffsetX(10);
$objDrawing->setRotation(15);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(36);
$objDrawing->setWorksheet($objActSheet);
//添加一個新的worksheet
$table->createSheet();
$table->getSheet(1)->setTitle('測試2');
//保護單元格
$table->getSheet(1)->getProtection()->setSheet(true);
$table->getSheet(1)->protectCells('A1:C22', 'PHPExcel');
//輸出內容
$outputFileName = "output.xls";
//到文件
//$objWriter->save($outputFileName);
//or
//到瀏覽器
//header("Content-Type: application/octet-stream");
//header('Content-Disposition:inline;filename="'.$outputFileName.'"');
//header("Content-Transfer-Encoding: binary");
//header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
//header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT");
//header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
//header("Pragma: no-cache");
//$objWriter->save('php://output');
?>
使用時常見的問題總結:
1.關於提示找不到文件的問題:
原因可能有:緩衝區沒有打開或者mb_overlod_func函數沒有關閉,解決這個問題的最好辦法是把php.ini中display_errors打開,下載文件,打開後會提示相應錯誤信息。若是後者,則需要打開php.ini文件,找到mbsrtring.func_overload=7將其隱掉。
若能正常導出excel但是沒有數據,則一般是程序錯誤(沒有取到數據或數據沒賦值)
2.導出excel時出現亂碼的問題,這個問題網上的答案很多。主要的解決方案有:
(1).亂碼原因:客戶使用的中文版Windows系統平台,而Windows平台的文件名編碼為gb2312(gbk),而我們網頁編碼為了跟進現存潮流一般都採用utf-8(國際化)編碼,這時當我們:header("Content-Disposition: inline; filename=\"" . $filename . ".xls-:special:1:-")時就會出現亂碼,假如你的網頁編碼就是gb2312那就不用考慮編碼問題了(否則轉碼了反而會出現亂碼)。
解決辦法:對$filename轉碼,執行:iconv('utf-8", "gb2312", $filename)。假如你的環境不支持iconv函數可以換別的函數,只要能將$filename的編碼轉為gbk就行。
(2):輸出文件的時候加上相應的頭信息:
Header('content-Type:application/vnd.ms-excel;charset=utf-8');
(3).如果以上方法還是出現亂碼,則可能是輸出緩衝區中有其他多餘的內容,在php文件中設置excel內容之間清理一下輸出緩衝區吧:<? php ob_clean();? >
以上三步基本可以涵蓋到多數excel亂碼的問題。
3.導出大數據時提示錯誤
打開php.ini文件中的display_errors,查看具體錯誤信息:一般情況下有兩類:
(1).runtime 超過了maxium time,這個時候可能的原因是文件中出現了死循環或者大循環。檢查源碼看是否有死循環。建議不要在循環體中設置excel格式,佔據的時間超多。經初步測試,在循環體中設置3-4個格式,則大約1500條數據時就會出現運行超時的問題。因此盡量把設置格式的代碼放置到循環體外。
(2).memory size of ....bytes exhausted這是典型的內存不夠用的情況。如可以修改php.ini文件則找到memory_limit = 32M將其改為memory_limit = 64M或者更大128M.如是遠程不能修改php.ini文件,則需要在代碼中修改:@ini_set('memory_limit','64M' );
Autor:霍小慶time:2011-04-22
總結一下最近使用phpexcel類導出excel 文件時遇到的問題,主要包括三大類:
1.導出時提示找不到文件怎麼辦?
2.導出excel時中文出現亂碼的問題。
3.導出數據量大時,提示內存超過最大值或者運行時間超時的問題。
先看下phpexcel常用的方法總結(摘錄自zeal_blog:http://www.zeali.net/entry/556)
<?
/**
* 如果使用Excel5 ,輸出的內容應該是GBK編碼。
*/
require_once 'PHPExcel.php';
//require_once 'PHPExcel/Writer/Excel5.php'; // 用於其他低版本xls
//require_once 'PHPExcel/Writer/Excel2007.php'; // 用於excel-2007 格式
// 創建一個處理對象實例
$table = new PHPExcel();
//設置文檔基本屬性
$table = $table->getProperties();
$table->setCreator("username");
$table->setLastModifiedBy("username");
$table->setTitle("document_title");
$table->setSubject("");
$table->setDescription("Test document, generated by PHPExcel.");
$table->setKeywords("office excel PHPExcel");
$table->setCategory("Test");
//設置當前的sheet索引,用於後續的內容操作。
//一般只有在使用多個sheet的時候才需要顯示調用。
//缺省情況下,PHPExcel會自動創建第一個sheet被設置SheetIndex=0
$table->setActiveSheetIndex(0);
//設置當前活動sheet的名稱
$table->setActiveSheetIndex(0)->setTitle('test_title');
$ohjActSheet=$table->setActiveSheetIndex(0);
//設置單元格內容
//由PHPExcel根據傳入內容自動判斷單元格內容類型
$objActSheet->setCellValue('A1', '字符串內容'); // 字符串內容
$objActSheet->setCellValue('A2', 26); // 數值
$objActSheet->setCellValue('A3', true); // 布爾值
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式
//顯式指定內容類型
$objActSheet->setCellValueExplicit('A5', '847475847857487584',
PHPExcel_Cell_DataType::TYPE_STRING);
//合併單元格
$objActSheet->mergeCells('B1:C22');
//分離單元格
$objActSheet->unmergeCells('B1:C22');
//設置單元格樣式
$objActSheet->getColumnDimension('B')->setAutoSize(true);
$objActSheet->getColumnDimension('A')->setWidth(30);
$objStyleA5 = $objActSheet->getStyle('A5');
//設置字體
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName('Courier New');
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB('FF999999');
//設置對齊方式
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); //水平
$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //垂直
//設置邊框
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//設置填充顏色
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5->getStartColor()->setARGB('FFEEEEEE');
//從指定的單元格複製樣式信息.
$objActSheet->duplicateStyle($objStyleA5, 'B1:C22');
//添加圖片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('ZealImg');
$objDrawing->setDescription('Image inserted by Zeal');
$objDrawing->setPath('./zeali.net.logo.gif');
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('C23');
$objDrawing->setOffsetX(10);
$objDrawing->setRotation(15);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(36);
$objDrawing->setWorksheet($objActSheet);
//添加一個新的worksheet
$table->createSheet();
$table->getSheet(1)->setTitle('測試2');
//保護單元格
$table->getSheet(1)->getProtection()->setSheet(true);
$table->getSheet(1)->protectCells('A1:C22', 'PHPExcel');
//輸出內容
$outputFileName = "output.xls";
//到文件
//$objWriter->save($outputFileName);
//or
//到瀏覽器
//header("Content-Type: application/octet-stream");
//header('Content-Disposition:inline;filename="'.$outputFileName.'"');
//header("Content-Transfer-Encoding: binary");
//header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
//header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT");
//header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
//header("Pragma: no-cache");
//$objWriter->save('php://output');
?>
使用時常見的問題總結:
1.關於提示找不到文件的問題:
原因可能有:緩衝區沒有打開或者mb_overlod_func函數沒有關閉,解決這個問題的最好辦法是把php.ini中display_errors打開,下載文件,打開後會提示相應錯誤信息。若是後者,則需要打開php.ini文件,找到mbsrtring.func_overload=7將其隱掉。
若能正常導出excel但是沒有數據,則一般是程序錯誤(沒有取到數據或數據沒賦值)
2.導出excel時出現亂碼的問題,這個問題網上的答案很多。主要的解決方案有:
(1).亂碼原因:客戶使用的中文版Windows系統平台,而Windows平台的文件名編碼為gb2312(gbk),而我們網頁編碼為了跟進現存潮流一般都採用utf-8(國際化)編碼,這時當我們:header("Content-Disposition: inline; filename=\"" . $filename . ".xls-:special:1:-")時就會出現亂碼,假如你的網頁編碼就是gb2312那就不用考慮編碼問題了(否則轉碼了反而會出現亂碼)。
解決辦法:對$filename轉碼,執行:iconv('utf-8", "gb2312", $filename)。假如你的環境不支持iconv函數可以換別的函數,只要能將$filename的編碼轉為gbk就行。
(2):輸出文件的時候加上相應的頭信息:
Header('content-Type:application/vnd.ms-excel;charset=utf-8');
(3).如果以上方法還是出現亂碼,則可能是輸出緩衝區中有其他多餘的內容,在php文件中設置excel內容之間清理一下輸出緩衝區吧:<? php ob_clean();? >
以上三步基本可以涵蓋到多數excel亂碼的問題。
3.導出大數據時提示錯誤
打開php.ini文件中的display_errors,查看具體錯誤信息:一般情況下有兩類:
(1).runtime 超過了maxium time,這個時候可能的原因是文件中出現了死循環或者大循環。檢查源碼看是否有死循環。建議不要在循環體中設置excel格式,佔據的時間超多。經初步測試,在循環體中設置3-4個格式,則大約1500條數據時就會出現運行超時的問題。因此盡量把設置格式的代碼放置到循環體外。
(2).memory size of ....bytes exhausted這是典型的內存不夠用的情況。如可以修改php.ini文件則找到memory_limit = 32M將其改為memory_limit = 64M或者更大128M.如是遠程不能修改php.ini文件,則需要在代碼中修改:@ini_set('memory_limit','64M' );
Script
PHPExcel
在使用PHPExcel導出Excel時出現的幾個錯誤的解決辦法
PHPExcel是PHP中功能最強大的導入、導出、操作Microsoft Excel的開源項目。但是它體系複雜,有時會讓人難以掌控。
由於Microsoft Office是商業軟件,因此在Office2003及之前的版本,微軟的文檔格式是不公開的。這導致別的Office辦公軟件處於極其被動的地位,因為他們再怎麼努力,也很難完全兼容被普遍使用的Microsoft Office Word、Microsoft Office PowerPoint、Microsoft Office Excel等軟件。在Microsoft Office 2007版推出以後,微軟採用了XML作為這些文檔的底層存儲方式,並且努力推廣Office2007所採用Open Office XML(OOXML)成為國際文檔格式標準。雖然中國投了反對票,但是最終在今年4月初,ISO通過快速通道投票確認微軟提出的OOXML因大多數成員認可而成為國際文檔格式標準。
但是,OOXML文檔格式標準“規格極其複雜,設計完全落伍”(“中國自由軟件界元老”之稱的宮敏博士之語),仍然很難被其它軟件所掌控。從這個意義上來說,PHPExcel真的是一款非常牛的開源軟件了。它能夠從PHP中導出各種版本的Excel文檔(包括Excel2007格式的文檔),並且支持一定程度的複雜格式。
不過言歸正傳,由於PHPExcel為了去產生Microsoft Office的文檔,因此可能在導出Excel的時候會出一些奇怪的錯誤。如果你發現使用PHPExcel導出的Excel表無法用MS Excel打開,可以嘗試使用文本文檔或者是EditPlus打開導出的Excel文件,看看是否有提示何種錯誤。以下是兩種錯誤的解決辦法:
(1)Fatal error: Maximum execution time of 30 seconds exceeded解決錯誤方法
需要修改php.ini文件,如果是使用Ubuntu 9.04 Server的服務器,可以在/etc/php5/apache2/下找到php.ini文件,如果是Freebsd,可以在/usr/local/lib/下找到php.ini文件。使用sudo權限編輯下面的語句:
將如下語句:
max_execution_time = 30
修改為:
max_execution_time = 300
也就是將PHP腳本最長執行時間從30秒延長到300秒。
然後重啟一下Apache服務器,如果是Ubuntu Server的服務器,可以使用如下命令:
sudo /etc/init.d/apache2 restart
(2)Fatal error: Allowed memory size of 16777216 bytes exhausted 的解決辦法
一樣地需要修改php.ini文件:
將如下語句:
memory_limit = 16M
修改為:
memory_limit = 512M
也就是將PHP腳本所能夠申請的內存從16M擴大到512M。具體數字可以根據自己的需要確定。
一樣需要重啟Apache服務器。
需要注意的是:
(1)以上的修改可能存在一定風險,例如給服務器造成過大的負擔。所以請再三確認是否有必要給PHPExcel或者是其他PHP程序開放更大的內存空間以及更長的執行時間。
(2)修改完php.ini之後,只有重啟Apache之後,新的設置才會生效。
(3)php.ini中的設置,請根據自己服務器的情況量力而行。
由於Microsoft Office是商業軟件,因此在Office2003及之前的版本,微軟的文檔格式是不公開的。這導致別的Office辦公軟件處於極其被動的地位,因為他們再怎麼努力,也很難完全兼容被普遍使用的Microsoft Office Word、Microsoft Office PowerPoint、Microsoft Office Excel等軟件。在Microsoft Office 2007版推出以後,微軟採用了XML作為這些文檔的底層存儲方式,並且努力推廣Office2007所採用Open Office XML(OOXML)成為國際文檔格式標準。雖然中國投了反對票,但是最終在今年4月初,ISO通過快速通道投票確認微軟提出的OOXML因大多數成員認可而成為國際文檔格式標準。
但是,OOXML文檔格式標準“規格極其複雜,設計完全落伍”(“中國自由軟件界元老”之稱的宮敏博士之語),仍然很難被其它軟件所掌控。從這個意義上來說,PHPExcel真的是一款非常牛的開源軟件了。它能夠從PHP中導出各種版本的Excel文檔(包括Excel2007格式的文檔),並且支持一定程度的複雜格式。
不過言歸正傳,由於PHPExcel為了去產生Microsoft Office的文檔,因此可能在導出Excel的時候會出一些奇怪的錯誤。如果你發現使用PHPExcel導出的Excel表無法用MS Excel打開,可以嘗試使用文本文檔或者是EditPlus打開導出的Excel文件,看看是否有提示何種錯誤。以下是兩種錯誤的解決辦法:
(1)Fatal error: Maximum execution time of 30 seconds exceeded解決錯誤方法
需要修改php.ini文件,如果是使用Ubuntu 9.04 Server的服務器,可以在/etc/php5/apache2/下找到php.ini文件,如果是Freebsd,可以在/usr/local/lib/下找到php.ini文件。使用sudo權限編輯下面的語句:
將如下語句:
max_execution_time = 30
修改為:
max_execution_time = 300
也就是將PHP腳本最長執行時間從30秒延長到300秒。
然後重啟一下Apache服務器,如果是Ubuntu Server的服務器,可以使用如下命令:
sudo /etc/init.d/apache2 restart
(2)Fatal error: Allowed memory size of 16777216 bytes exhausted 的解決辦法
一樣地需要修改php.ini文件:
將如下語句:
memory_limit = 16M
修改為:
memory_limit = 512M
也就是將PHP腳本所能夠申請的內存從16M擴大到512M。具體數字可以根據自己的需要確定。
一樣需要重啟Apache服務器。
需要注意的是:
(1)以上的修改可能存在一定風險,例如給服務器造成過大的負擔。所以請再三確認是否有必要給PHPExcel或者是其他PHP程序開放更大的內存空間以及更長的執行時間。
(2)修改完php.ini之後,只有重啟Apache之後,新的設置才會生效。
(3)php.ini中的設置,請根據自己服務器的情況量力而行。
Script
PHPExcel
Fatal error: Class 'ZipArchive' not found的解決辦法
Fatal error: Class 'ZipArchive' not found的解決辦法
出現這個錯誤說明是程序在調用'ZipArchive' 這個類的時候沒有成功,原因是由於在安裝php的時候沒有增加php zip的支持(非zlib)。
在Windows下的解決辦法是:
1、在php.ini文件中,將extension=php_zip.dll前面的分號“;”去除;
(如果沒有,請添加extension=php_zip.dll此行並確保php_zip.dll文件存在相應的目錄)
然後同樣在php.ini文件中,將zlib.output_compression = Off 改為zlib.output_compression = On ;
2、重啟Apache服務器。
在Unix/Linux下的解決辦法:
1、在Linux下沒有php_zip.dll這個文件(有也不會起作用的),所以需要重新編譯一下php的zip模塊。具體安裝方法如下:
cd /usr/src
wget http://pecl.php.net/get/zip
tar -zxvf zip
cd zip-1.x.x
phpize
./configure
make
sudo make instal
其中, 在最後使用make install命令的時候,可能需要用到root的權限,所以建議使用sudo來運行。安裝完之後,屏幕上會提示zip.so的位置。然後將其記錄下來,如:/usr/local/lib/php/extensions/zip.so。
2、使用root權限修改php.ini(通常可能會在/usr/local/lib/文件夾下,不過視當初安裝php而定,可以通過phpinfo()來查看):
增加extension = /usr/local/lib/php/extensions/zip.so,然後同樣在php.ini文件中,將zlib.output_compression = Off 改為zlib.output_compression = On ;
3、最後別忘了重啟一下Apache:apachectl restart;
這個針對php的zip模塊就安裝完成了,能夠在php中使用ZipArchive類了
出現這個錯誤說明是程序在調用'ZipArchive' 這個類的時候沒有成功,原因是由於在安裝php的時候沒有增加php zip的支持(非zlib)。
在Windows下的解決辦法是:
1、在php.ini文件中,將extension=php_zip.dll前面的分號“;”去除;
(如果沒有,請添加extension=php_zip.dll此行並確保php_zip.dll文件存在相應的目錄)
然後同樣在php.ini文件中,將zlib.output_compression = Off 改為zlib.output_compression = On ;
2、重啟Apache服務器。
在Unix/Linux下的解決辦法:
1、在Linux下沒有php_zip.dll這個文件(有也不會起作用的),所以需要重新編譯一下php的zip模塊。具體安裝方法如下:
cd /usr/src
wget http://pecl.php.net/get/zip
tar -zxvf zip
cd zip-1.x.x
phpize
./configure
make
sudo make instal
其中, 在最後使用make install命令的時候,可能需要用到root的權限,所以建議使用sudo來運行。安裝完之後,屏幕上會提示zip.so的位置。然後將其記錄下來,如:/usr/local/lib/php/extensions/zip.so。
2、使用root權限修改php.ini(通常可能會在/usr/local/lib/文件夾下,不過視當初安裝php而定,可以通過phpinfo()來查看):
增加extension = /usr/local/lib/php/extensions/zip.so,然後同樣在php.ini文件中,將zlib.output_compression = Off 改為zlib.output_compression = On ;
3、最後別忘了重啟一下Apache:apachectl restart;
這個針對php的zip模塊就安裝完成了,能夠在php中使用ZipArchive類了
XMLHTTPRequest的屬性和方法
由於現在在公司負責製作標準的靜態頁面,為了增強客戶體驗,所以經常要做些AJAX效果,也學你也和我一樣在,學習AJAX。而設計AJAX時使用的一個重要的技術(工具)就是XMLHTTPRequest對象了。這里海嘯把我學習XMLHTTPRequest對象的一點資料拿出來跟大家一起分享。文中的資料都是海嘯在學習時在網上收集的,如果您看過,那就再加深下印象吧!
Script
JQUERY
JavaScript 背景及特色
JavaScript 早期是由 Netscape Communications 公司所開發的一種解譯式程式語言,專門用在網頁中,並在用戶端的電腦執行,以提高網頁的互動性為主要目標。早期的瀏覽器,例如 Netscape,也只有支援 JavaScript 為主要的客戶端網頁程式語言。而近期的微軟瀏覽器 IE,則可以支援兩種程式語言,包含 JavaScript 和 VBScript,但是 JavaScript 還是網頁內訂預設的客戶端程式語言。因此只有 JavaScript 能夠同時適用於各大瀏覽器,如 IE、FireFox 和 Chrome 等。
如何成為AJAX高手
提起javascript,很多程序員都覺得不屑一顧,總是認為他很低級.假如在C/S產品開發模式下,JS的確沒什麼大的用處.可是在GOOGLE一夜間將地圖搜索推出後,這個世界就起了些微妙的變化,直到今年除夕,微軟偷偷將LIVE上線,接著將LIVE的產品級別提到和旗艦產品WINDOWS一樣高時,javascript終於發威了.
訂閱:
文章 (Atom)