结的几个使用方法
001 | include 'PHPExcel.php' ; |
002 | include 'PHPExcel/Writer/Excel2007.php' ; |
003 | //或者include 'PHPExcel/Writer/Excel5.php'; 用于输出.xls的 |
004 | 创建一个excel |
005 | $objPHPExcel = new PHPExcel(); |
006 | 保存excel—2007格式 |
007 | $objWriter = new PHPExcel_Writer_Excel2007( $objPHPExcel ); |
008 | //或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式 |
009 | $objWriter ->save( "xxx.xlsx" ); |
010 | 直接输出到浏览器 |
011 | $objWriter = new PHPExcel_Writer_Excel5( $objPHPExcel ); |
012 | header( "Pragma: public" ); |
013 | header("Expires: 0″); |
014 | header("Cache-Control:must-revalidate, post-check=0, pre-check=0″); |
015 | header( "Content-Type:application/force-download" ); |
016 | header( "Content-Type:application/vnd.ms-execl" ); |
017 | header( "Content-Type:application/octet-stream" ); |
018 | header( "Content-Type:application/download" );; |
019 | header( 'Content-Disposition:attachment;filename="resume.xls"' ); |
020 | header( "Content-Transfer-Encoding:binary" ); |
021 | $objWriter ->save( 'php://output' ); |
022 | ——————————————————————————————————————– |
023 | 设置excel的属性: |
024 | 创建人 |
025 | $objPHPExcel ->getProperties()->setCreator( "Maarten Balliauw" ); |
026 | 最后修改人 |
027 | $objPHPExcel ->getProperties()->setLastModifiedBy( "Maarten Balliauw" ); |
028 | 标题 |
029 | $objPHPExcel ->getProperties()->setTitle( "Office 2007 XLSX Test Document" ); |
030 | 题目 |
031 | $objPHPExcel ->getProperties()->setSubject( "Office 2007 XLSX Test Document" ); |
032 | 描述 |
033 | $objPHPExcel ->getProperties()->setDescription( "Test document for Office 2007 XLSX, generated using PHP classes." ); |
034 | 关键字 |
035 | $objPHPExcel ->getProperties()->setKeywords( "office 2007 openxml php" ); |
036 | 种类 |
037 | $objPHPExcel ->getProperties()->setCategory( "Test result file" ); |
038 | ——————————————————————————————————————– |
039 | 设置当前的sheet |
040 | $objPHPExcel ->setActiveSheetIndex(0); |
041 | 设置sheet的name |
042 | $objPHPExcel ->getActiveSheet()->setTitle( 'Simple' ); |
043 | 设置单元格的值 |
044 | $objPHPExcel ->getActiveSheet()->setCellValue( 'A1' , 'String' ); |
045 | $objPHPExcel ->getActiveSheet()->setCellValue( 'A2' , 12); |
046 | $objPHPExcel ->getActiveSheet()->setCellValue( 'A3' , true); |
047 | $objPHPExcel ->getActiveSheet()->setCellValue( 'C5' , '=SUM(C2:C4)' ); |
048 | $objPHPExcel ->getActiveSheet()->setCellValue( 'B8' , '=MIN(B2:C5)' ); |
049 | 合并单元格 |
050 | $objPHPExcel ->getActiveSheet()->mergeCells( 'A18:E22' ); |
051 | 分离单元格 |
052 | $objPHPExcel ->getActiveSheet()->unmergeCells( 'A28:B28' ); |
053 |
054 | 保护cell |
055 | $objPHPExcel ->getActiveSheet()->getProtection()->setSheet(true); // Needs to be set to true in order to enable any worksheet protection! |
056 | $objPHPExcel ->getActiveSheet()->protectCells( 'A3:E13' , 'PHPExcel' ); |
057 | 设置格式 |
058 | // Set cell number formats |
059 | echo date ( 'H:i:s' ) . " Set cell number formats\n" ; |
060 | $objPHPExcel ->getActiveSheet()->getStyle( 'E4' )->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); |
061 | $objPHPExcel ->getActiveSheet()->duplicateStyle( $objPHPExcel ->getActiveSheet()->getStyle( 'E4' ), 'E5:E13' ); |
062 | 设置宽width |
063 | // Set column widths |
064 | $objPHPExcel ->getActiveSheet()->getColumnDimension( 'B' )->setAutoSize(true); |
065 | $objPHPExcel ->getActiveSheet()->getColumnDimension( 'D' )->setWidth(12); |
066 | 设置font |
067 | $objPHPExcel ->getActiveSheet()->getStyle( 'B1' )->getFont()->setName( 'Candara' ); |
068 | $objPHPExcel ->getActiveSheet()->getStyle( 'B1' )->getFont()->setSize(20); |
069 | $objPHPExcel ->getActiveSheet()->getStyle( 'B1' )->getFont()->setBold(true); |
070 | $objPHPExcel ->getActiveSheet()->getStyle( 'B1' )->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); |
071 | $objPHPExcel ->getActiveSheet()->getStyle( 'B1' )->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); |
072 | $objPHPExcel ->getActiveSheet()->getStyle( 'E1' )->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); |
073 | $objPHPExcel ->getActiveSheet()->getStyle( 'D13' )->getFont()->setBold(true); |
074 | $objPHPExcel ->getActiveSheet()->getStyle( 'E13' )->getFont()->setBold(true); |
075 | 设置align |
076 | $objPHPExcel ->getActiveSheet()->getStyle( 'D11' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); |
077 | $objPHPExcel ->getActiveSheet()->getStyle( 'D12' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); |
078 | $objPHPExcel ->getActiveSheet()->getStyle( 'D13' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); |
079 | $objPHPExcel ->getActiveSheet()->getStyle( 'A18' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY); |
080 | //垂直居中 |
081 | $objPHPExcel ->getActiveSheet()->getStyle( 'A18' )->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); |
082 | 设置column的border |
083 | $objPHPExcel ->getActiveSheet()->getStyle( 'A4' )->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); |
084 | $objPHPExcel ->getActiveSheet()->getStyle( 'B4' )->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); |
085 | $objPHPExcel ->getActiveSheet()->getStyle( 'C4' )->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); |
086 | $objPHPExcel ->getActiveSheet()->getStyle( 'D4' )->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); |
087 | $objPHPExcel ->getActiveSheet()->getStyle( 'E4' )->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); |
088 | 设置border的color |
089 | $objPHPExcel ->getActiveSheet()->getStyle( 'D13' )->getBorders()->getLeft()->getColor()->setARGB( 'FF993300' ); |
090 | $objPHPExcel ->getActiveSheet()->getStyle( 'D13' )->getBorders()->getTop()->getColor()->setARGB( 'FF993300' ); |
091 | $objPHPExcel ->getActiveSheet()->getStyle( 'D13' )->getBorders()->getBottom()->getColor()->setARGB( 'FF993300' ); |
092 | $objPHPExcel ->getActiveSheet()->getStyle( 'E13' )->getBorders()->getTop()->getColor()->setARGB( 'FF993300' ); |
093 | $objPHPExcel ->getActiveSheet()->getStyle( 'E13' )->getBorders()->getBottom()->getColor()->setARGB( 'FF993300' ); |
094 | $objPHPExcel ->getActiveSheet()->getStyle( 'E13' )->getBorders()->getRight()->getColor()->setARGB( 'FF993300' ); |
095 | 设置填充颜色 |
096 | $objPHPExcel ->getActiveSheet()->getStyle( 'A1' )->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); |
097 | $objPHPExcel ->getActiveSheet()->getStyle( 'A1' )->getFill()->getStartColor()->setARGB( 'FF808080' ); |
098 | $objPHPExcel ->getActiveSheet()->getStyle( 'B1' )->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); |
099 | $objPHPExcel ->getActiveSheet()->getStyle( 'B1' )->getFill()->getStartColor()->setARGB( 'FF808080' ); |
100 | 加图片 |
101 | $objDrawing = new PHPExcel_Worksheet_Drawing(); |
102 | $objDrawing ->setName( 'Logo' ); |
103 | $objDrawing ->setDescription( 'Logo' ); |
104 | $objDrawing ->setPath( './images/officelogo.jpg' ); |
105 | $objDrawing ->setHeight(36); |
106 | $objDrawing ->setWorksheet( $objPHPExcel ->getActiveSheet()); |
107 | $objDrawing = new PHPExcel_Worksheet_Drawing(); |
108 | $objDrawing ->setName( 'Paid' ); |
109 | $objDrawing ->setDescription( 'Paid' ); |
110 | $objDrawing ->setPath( './images/paid.png' ); |
111 | $objDrawing ->setCoordinates( 'B15' ); |
112 | $objDrawing ->setOffsetX(110); |
113 | $objDrawing ->setRotation(25); |
114 | $objDrawing ->getShadow()->setVisible(true); |
115 | $objDrawing ->getShadow()->setDirection(45); |
116 | $objDrawing ->setWorksheet( $objPHPExcel ->getActiveSheet()); |
117 | //处理中文输出问题 |
118 | 需要将字符串转化为UTF-8编码,才能正常输出,否则中文字符将输出为空白,如下处理: |
119 | $str = iconv( 'gb2312' , 'utf-8' , $str ); |
120 | 或者你可以写一个函数专门处理中文字符串: |
121 | function convertUTF8( $str ) |
122 | { |
123 | if ( empty ( $str )) return '' ; |
124 | return iconv( 'gb2312' , 'utf-8' , $str ); |
125 | } |
126 | //从数据库输出数据处理方式 |
127 | 从数据库读取数据如: |
128 | $db = new Mysql( $dbconfig ); |
129 | $sql = "SELECT * FROM 表名" ; |
130 | $row = $db ->GetAll( $sql ); // $row 为二维数组 |
131 | $count = count ( $row ); |
132 | for ( $i = 2; $i <= $count +1; $i ++) { |
133 | $objPHPExcel ->getActiveSheet()->setCellValue( 'A' . $i , convertUTF8( $row [ $i -2][1])); |
134 | $objPHPExcel ->getActiveSheet()->setCellValue( 'B' . $i , convertUTF8( $row [ $i -2][2])); |
135 | $objPHPExcel ->getActiveSheet()->setCellValue( 'C' . $i , convertUTF8( $row [ $i -2][3])); |
136 | $objPHPExcel ->getActiveSheet()->setCellValue( 'D' . $i , convertUTF8( $row [ $i -2][4])); |
137 | $objPHPExcel ->getActiveSheet()->setCellValue( 'E' . $i , convertUTF8( date ( "Y-m-d" , $row [ $i -2][5]))); |
138 | $objPHPExcel ->getActiveSheet()->setCellValue( 'F' . $i , convertUTF8( $row [ $i -2][6])); |
139 | $objPHPExcel ->getActiveSheet()->setCellValue( 'G' . $i , convertUTF8( $row [ $i -2][7])); |
140 | $objPHPExcel ->getActiveSheet()->setCellValue( 'H' . $i , convertUTF8( $row [ $i -2][8])); |
141 | } |
142 | |
143 | 在默认sheet后,创建一个worksheet |
144 | echo date ( 'H:i:s' ) . " Create new Worksheet object\n" ; |
145 | $objPHPExcel ->createSheet(); |
146 | $objWriter = PHPExcel_IOFactory::createWriter( $objExcel , 'Excel5' ); |
147 | $objWriter -save( 'php://output' ); |