>  기사  >  백엔드 개발  >  PHP는 스타일이 지정된 Excel 인스턴스 공유 내보내기를 구현합니다.

PHP는 스타일이 지정된 Excel 인스턴스 공유 내보내기를 구현합니다.

墨辰丷
墨辰丷원래의
2018-06-01 14:17:432208검색

때때로 고객은 소프트웨어에서 내보낸 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

phpstrtotime 함수 성능 분석_phptips

php실행 오류 Call to un 정의된 함수 cur_init() 최신 솔루션

위 내용은 PHP는 스타일이 지정된 Excel 인스턴스 공유 내보내기를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.