laravel excel 导出表格
1:创建导出文件,传入数据
$cover = [
[\’第\’,\’一\’,\’行\’],
[\’第\’,\’二\’,\’410000000000000000\’.\’\’],//防止数字过长导致格式乱码 例如身份证需在字段后加空格
[\’第\’,\’三\’,\’行\’],
[\’\’,\’ \’,\’\’],//空白行,用于分页打印分割内容,如果不填则会连在一起无法分页
];
表格格式先按照数组格式存储,样式在后续调整
Excel::create(iconv(\’UTF-8\’,\’GBK\’, \’申请材料\’), function ($excel) use ($cover) {
$excel->sheet(\’score\’, function ($sheet)use ($cover) {
$sheet->rows($cover);
//后续操作写在此处
});
})->export(\’xls\’);
2:表格样式和部分功能
设置宽度:
$sheet->setWidth(array( \’A\’ => 16,\’B\’ => 64));
设置高度:
$sheet->setHeight(array(
($i * 20 + 1) => 40,//设置每行的高度
($i * 20 + 2) => 40,
));
设置单元格字体样式:
$sheet->cells(\’A1 :A20\’), function ($cells) {
$cells->setFontSize(16);//字体大小
$cells->setFontFamily(\’simsun\’);//字体样式
$cells->setValignment(\’center\’);//字体垂直居中
$cells->setAlignment(\’center\’);//字体水平居中
$cells->setBorder(\’none\’,\’thin\’, \’none\’, \’thin\’);//设置表格边框
});
设置打印时页面边距
$sheet->setPageMargin(array(
0.8, 0, 0, 0.4));
打印导出图片到文档
$card_id= $cover [3][1] ;//获取到图片数据
$img = DB::select( );//查询图片名
$src = $img[0]->photopath;
if (@getimagesize(storage_path() . \’/photo/\’ . $src) == null) {
$src = \’error.jpg\’;
}//判断是否存在图片,不存在则返回错误图片名称
if (sizeof($img) > 0) {
/*实例化插入图片类*/
$objDrawing = new PHPExcel_Worksheet_Drawing();
/*设置图片路径 切记:只能是本地图片*/
$objDrawing->setPath(storage_path(). \’/photo/\’ . $src);
/*设置图片高度*/
$objDrawing->setHeight(120);
$objDrawing->setWidth(120);
/*设置图片要插入的单元格*/
$objDrawing->setCoordinates(\’I2\’);
$objDrawing->setWorksheet($sheet);
}
设置分页打印区域
$print_area= \’\’;
$print_area= $print_area . \’A\’ . ($i * 23 + 1) . \’:I\’ . ($i * 23 + 22) . \’,\’;//循环生成需打印的内容\’A1:B2,A3:B4,\’
$print_area= substr($print_area,0,strlen($print_area)-1);//以字符串形式传入打印区域
$sheet->setPrintArea($print_area);
合并单元格
$sheet->mergeCells(\’A1:B2\’);