PHP通过PHPExcel导出表格
2018-04-25 本文已影响0人
yzw12138
1、下载PHPExcel类库,引入项目中。
2、创建一个新的controller,引入PHPExcel文件
require_once APPPATH . 'libraries/PHPExcel.php';
require_once APPPATH . 'libraries/PHPExcel/Writer/Excel2007.php';
3、创建一个新的PHPExcel对象
$objPHPExcel = new PHPExcel();
4、向表格中添加数据
// 添加单条数据
$objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 1), '姓名');
// 循环添加数据
// 由于表格横向是A、B、C......进行排序的,所以无法直接循环进行添加数据,
// 因此利用PHP的chr函数将A、B、C......等英文字母转成ASCII码进行循环添加
// 横向添加表头
for ($i = 67; $i < (count($items) + 67); $i++)
{
if ($i > 90)
{
$objPHPExcel->getActiveSheet()->setCellValue('A' . chr($i-25) . '1', $items[$i-66]['title']);
}
else
{
$objPHPExcel->getActiveSheet()->setCellValue(chr($i) . '1', $items[$i - 67]['title']);
}
}
// 纵向添加数据
for($i = 0; $i < count($appraise_list); $i++)
{
if ($i == 0)
{
$objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 1), '姓名');
$objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 1), '学号');
$objPHPExcel->getActiveSheet()->setCellValue(chr(count($items) + 67) . ($i + 1), '评分');
}
$objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $appraise_list[$i]['full_name']);
$objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $appraise_list[$i]['student_no']);
if (isset($score_map[$appraise_list[$i]['team_id']]))
{
$objPHPExcel->getActiveSheet()->setCellValue(chr(count($items) + 67) . ($i + 2), $score_map[$appraise_list[$i]['team_id']]);
}
else
{
$objPHPExcel->getActiveSheet()->setCellValue(chr(count($items) + 67) . ($i + 2), '尚无评分');
}
for ($j = 67; $j < (count($items) + 67); $j++)
{
if (isset($score_map[$appraise_list[$i]['team_id'] . $items[$j - 67]['id']]))
{
$objPHPExcel->getActiveSheet()->setCellValue(chr($j) . ($i + 2), $score_map[$appraise_list[$i]['team_id'] . $items[$j - 67]['id']]);
}
else
{
$objPHPExcel->getActiveSheet()->setCellValue(chr($j) . ($i + 2), '-');
}
}
}
5、设置导出表格的格式
// 设置居中
$objPHPExcel->getActiveSheet()->getStyle('A1:' . chr(count($items) + 67) . (count($appraise_list) + 1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 所有垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A1:' . chr(count($items) + 67) . (count($appraise_list) + 1))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
// 合并单元格
$PHPExcel->getActiveSheet()->mergeCells('A1:A3');
6、最后导出表格样式
image.png