首頁  >  文章  >  後端開發  >  PHP實作匯出帶樣式的Excel實例分享

PHP實作匯出帶樣式的Excel實例分享

墨辰丷
墨辰丷原創
2018-06-01 14:17:432234瀏覽

有時客戶會向你抱怨,軟體為他們匯出的Excel格式太難看了,或許這篇文章會對你有幫助。在用PHP匯出資料的同時還可以設定顏色、字號大小、加粗、合併儲存格等等。

工作中做匯出的時候,需要匯出自訂的表格或嫌棄匯出的Excel格式太難看了。

需要設定顏色、字號大小、加粗、合併儲存格等等。

效果圖:


PHP程式碼:

/**
* 导出文件
* @return string
*/
public function export()
{
$file_name  = "成绩单-".date("Y-m-d H:i:s",time());
$file_suffix = "xls";
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file_name.$file_suffix");
//根据业务,自己进行模板赋值。
$this->display();
}

HTML程式碼:


#

<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
</head>
<body>
<table border=1 cellpadding=0 cellspacing=0 width="100%" >
<tr>
<td colspan="5" align="center">
<h2>成绩单</h2>
</td>
</tr>
<tr>
<td style=&#39;width:54pt&#39; align="center">编号</td>
<td style=&#39;width:54pt&#39; align="center">姓名</td>
<td style=&#39;width:54pt&#39; align="center">语文</td>
<td style=&#39;width:54pt&#39; align="center">数学</td>
<td style=&#39;width:54pt&#39; align="center">英语</td>
</tr>
<tr>
<td align="center">1</td>
<td style="background-color: #00CC00;" align="center">Jone</td>
<td style="background-color: #00adee;" align="center">90</td>
<td style="background-color: #00CC00;" align="center">85</td>
<td style="background-color: #00adee;" align="center">100</td>
</tr>
<tr>
<td align="center">2</td>
<td style="background-color: #00CC00;" align="center">Tom</td>
<td style="background-color: #00adee;" align="center">99</td>
<td style="background-color: #00CC00;" align="center">85</td>
<td style="background-color: #00adee;" align="center">80</td>
</tr>
</table>
</body>
</html>
我們再來看一個更方便的元件
在這裡需要用到PEAR的兩個軟體包Spreadsheet Excel Writer 和OLE,如果沒有可以分別從http: //pear.php.net/package/Spreadsheet_Excel_Writer/ 和http://pear.php.net/package/OLE/ 下載,解壓縮放在PEAR目錄下。

全部程式碼如下:

<?php
include &#39;Writer.php&#39;;

/* *** 准备导出的数据 *** */
$head = &#39;One Week Schedule&#39;;
$data = array(&#39;Monday&#39; =>   array( array(&#39;time&#39; => &#39;09:00&#39;, &#39;event&#39; => &#39;公司例会例会&#39;),
                      array(&#39;time&#39; => &#39;14:00&#39;, &#39;event&#39; => &#39;部门例会&#39;)
                    ),
         &#39;Tuesday&#39; =>   array( array(&#39;time&#39; => &#39;09:30&#39;, &#39;event&#39; => &#39;和 Mr. Stinsen 早餐&#39;)),
         &#39;Wednesday&#39; =>   array(array(&#39;time&#39; => &#39;12:10&#39;, &#39;event&#39; => &#39;市场中阶报告&#39;),
                    array(&#39;time&#39; => &#39;15:30&#39;, &#39;event&#39; => &#39;市场部战略部署会议&#39;) ),
         &#39;Thursday&#39; =>   array( array(&#39;time&#39; => &#39;&#39;, &#39;event&#39; => &#39;&#39;)),
         &#39;Friday&#39; =>   array( array(&#39;time&#39; => &#39;16:00&#39;, &#39;event&#39; => &#39;WoC Stock 研讨会&#39;),
                    array(&#39;time&#39; => &#39;17:00&#39;, &#39;event&#39; => &#39;飞往华尔街&#39;),
                    array(&#39;time&#39; => &#39;21:00&#39;, &#39;event&#39; => &#39;会见克林顿&#39;))
     );
/* *** *** */

$workbook = new Spreadsheet_Excel_Writer();
$filename = date(&#39;YmdHis&#39;).&#39;.xls&#39;;//csv
$workbook->send($filename); // 发送 Excel 文件名供下载
$workbook->setVersion( 8 );

$sheet = &$workbook->addWorksheet("Sheet1");   // 创建工作表
$sheet->setInputEncoding(&#39;utf-8&#39;);          // 字符集
$headFormat = &$workbook->addFormat(array(&#39;Size&#39; => 14, &#39;Align&#39; => &#39;center&#39;,&#39;Color&#39; => &#39;white&#39;, &#39;FgColor&#39; => &#39;brown&#39;, &#39;Bold&#39;=>&#39;1&#39;, &#39;Border&#39; => &#39;1&#39;));//定义格式
$dayFormat = &$workbook->addFormat(array(&#39;Size&#39; => 12, &#39;Align&#39; => &#39;center&#39;, &#39;VAlign&#39; => &#39;vcenter&#39;, &#39;FgColor&#39; => &#39;green&#39;, &#39;Color&#39; => &#39;white&#39;, &#39;Border&#39; => &#39;1&#39;));//定义格式
$dataFormat = &$workbook->addFormat(array(&#39;Size&#39; => 10, &#39;Align&#39; => &#39;left&#39;, &#39;Border&#39; => &#39;1&#39;, &#39;Color&#39; => &#39;black&#39;, &#39;FgColor&#39;=> &#39;cyan&#39;));//定义格式

$sheet->setColumn(0, 0, 20);   // 设置宽度
$sheet->setColumn(1, 1, 15);   // 设置宽度
$sheet->setColumn(2, 2, 30);   // 设置宽度

$r = 0;   
$sheet->write(0, $r, $head, $headFormat);   // 表格标题
$sheet->mergeCells(0, 0, 0, 2);   // 跨列显示

$r++;   // 数据从第2行开始
foreach ($data as $day => $events){
   $c = 0;
   $sheet->write($r, $c, $day, $dayFormat);
   if (!$events){
     // 当天没有计划
     $r++;
   } else {
     $startRow = $r;
     foreach ($events as $e){
        $c = 1;
        $sheet->write($r, $c++, $e[&#39;time&#39;], $dataFormat);   // 工作表写入数据
        $sheet->write($r, $c++, $e[&#39;event&#39;], $dataFormat);   // 工作表写入数据
        $r++;
     }
     // 合并 $day 单元格
     $sheet->mergeCells($startRow, 0, $r - 1, 0);
   }
}
$workbook->close(); // 完成下载
 ?>

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關推薦:

php###的socket用法詳解#################php## #中strtotime函數效能分析_###php###技巧###################php###執行報錯Call to undefined function curl_init()的最新解決方法###########################

以上是PHP實作匯出帶樣式的Excel實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn