加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP实现导出带样式的Excel

发布时间:2020-12-12 21:41:49 所属栏目:PHP教程 来源:网络整理
导读:工作中做导出的时候,需要导出自定义的表格或嫌弃导出的Excel格式太难看了。 需要设置颜色、字号大

工作中做导出的时候,需要导出自定义的表格或嫌弃导出的Excel格式太难看了。

需要设置颜色、字号大小、加粗、合并单元格等等。

效果图:

PHP代码:

display(); }

HTML代码:

成绩单

我们再来看一个更方便的组件

在这里需要用到PEAR的两个软件包 Spreadsheet Excel Writer 和 OLE,如果没有可以分别从 和 下载,解压放在PEAR目录下。

全部代码如下:

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

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

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

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

$r = 0;
$sheet->write(0,$r,$head,$headFormat); // 表格标题
$sheet->mergeCells(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['time'],$dataFormat); // 工作表写入数据
$sheet->write($r,$e['event'],$dataFormat); // 工作表写入数据
$r++;
}
// 合并 $day 单元格
$sheet->mergeCells($startRow,$r - 1,0);
}
}
$workbook->close(); // 完成下载
?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!