简介:Excel导出需求真实千奇百怪,最近在外包公司做外包项目,客户要求导出订单表格,要求单元格的大小宽度及高度都必须按照他们的要求进行修改,经过无数次修改还是没有达到客户的要求,最后只能让客户可一个调整好的模板,之后再这个模板的基础之上进行开发
Excel导出需求真实千奇百怪,最近在外包公司做外包项目,客户要求导出订单表格,要求单元格的大小宽度及高度都必须按照他们的要求进行修改,经过无数次修改还是没有达到客户的要求,最后只能让客户可一个调整好的模板,之后再这个模板的基础之上进行开发;
Excel模板开发的具体步骤如下:
<?php
class excel{
public function get(){
$inputFileName = ROOT_PATH.'Site'.DS.'excel'.DS.'account_order.xls';//获取文件的类型
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);//创建一个excel对象
$objReader =\PHPExcel_IOFactory::createReader(inputFileType);//读取excel模板(参数是模板的路径)
$objPHPExcel = $objReader->load ($inputFileName); //设置当前sheet
$objPHPExcel->setActiveSheetIndex(0);//获取当前的sheet
$sheet = $objPHPExcel->getActiveSheet(); //设置标题
$sheet->setTitle('账单导出'); //设置某个单元格的内容
$sheet->setCellValue('B7',$user_info['username']);
$sheet->setCellValue('C7','客户:'.$user_info['othername']);
$sheet->setCellValue('G7',date('Y-m-d'));
$count = count($data);
if($count>5){ //在13行前添加$count-5行
$sheet->insertNewRowBefore(13,$count-5);
}
foreach($data as $k=>$v)
{
$k = $k+9;
$sheet->setCellValue("A".$k,$v['add_time']);
//设置以文本形式,如果不设置数字类型的长度太长会已其他科学计算方式显示
$sheet->setCellValue('B'.$k,$v['orderoutno']);
$sheet->getStyle('B'.$k)->getNumberFormat()
->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
$sheet->setCellValue('C'.$k,$v['transport']);
$sheet->setCellValue('D'.$k,$v['nationality_info']['name']);
$sheet->setCellValue('F'.$k,$v['pronumber']);
$sheet->setCellValue('G'.$k,$v['weight']);
$sheet->setCellValue('H'.$k,$v['volume']);
$sheet->setCellValue('I'.$k,$v['totalprice']);
$sheet->setCellValue('J'.$k,$v['cosremarks']);
}
$this->browserExport("Xlsx", $user_info['username']."的账单");
$writer = \PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007");
$writer->save("php://output");
}
//将excel输出
public function browserExport($type,$filename) {
if($type!="Xlsx"){
header('Content-Type: application/vnd.ms-excel');
}else{
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
}
header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
header('Cache-Control: max-age=0');
}
}
如果只是少量数据的数据的excel导出,没有什么问题,但是如果涉及大量数据的导出,可能会报内存不足的错误。对于这个问题大家可以使用 xlswriter 导出数据
有遗漏或者不对的可以在我的公众号留言哦