PHPExcel自动生成文件保存到服务器上 PHPExcel中文使用手册详解 常用的方法 :
1、所有单元格文字居中
2、所有单元格文字垂直居中
等等
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//所有单元格文字居中 $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//所有单元格文字垂直居中 $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20);//所有单元格(行)默认高度 $objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(20);//所有单元格(列)默认宽度 $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);//设置行高度 $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);//设置列宽度 $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(18);//设置文字大小 $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);//设置是否加粗 $objPHPExcel->getActiveSheet()->getStyle('A:Z')->getAlignment()->setWrapText(TRUE); // A 到 Z 行,字符串自动换行,不会撑开单元格高度 不影响其他的设置 $objPHPExcel->getActiveSheet()->getStyle("1:100")->getAlignment()->setWrapText(TRUE); // 第1列 到 第100列 单元格 字符串自动换行,会撑开单元格高度,但这样就会影响自定默认单元格的高度, $objPHPExcel->getActiveSheet()->getStyle("A1:A100")->getAlignment()->setWrapText(TRUE); // A1 到 A100 单元格,指定A行的 字符串自动换行 $objPHPExcel->getActiveSheet()->getStyle("A1")->getAlignment()->setWrapText(TRUE); // A1单元格,字符串自动换行
//"\n" 指定位置换行 必须用双引号 $objPHPExcel -> getActiveSheet() -> getDefaultStyle() -> getFont() -> setSize(10);// 设置默认字体大小 $objPHPExcel -> getActiveSheet() -> getStyle('A1') -> getFont() -> setSize(14);// 设置单元格字体大小 $objPHPExcel -> getActiveSheet() -> getStyle('A1') -> getFont()->getColor()->setRGB('FF0000');// 设置单元格字体颜色
// 设置单元格背景色 $objPHPExcel -> getActiveSheet() -> getStyle('A1') -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel -> getActiveSheet() -> getStyle('A1') -> getFill() -> getStartColor() -> setRGB('99CCFF');
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//指定单元格 设置文字居左(HORIZONTAL_LEFT,默认值)中(HORIZONTAL_CENTER)右(HORIZONTAL_RIGHT) $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//指定单元格 垂直居中
$objPHPExcel->getActiveSheet()->freezePane('A5');//冻结第5行以上的单元格 $objPHPExcel->getDefaultStyle()->getFont()->setName('宋体');//设置字体
//直接在浏览器中生成下载方法 $fileName_1 = iconv("utf-8", "gb2312", $fileName[1]); // 重命名表 $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表 ob_end_clean(); ob_start(); header('Content-Type: application/vnd.ms-excel;charset=UTF-8'); header("Content-Disposition: attachment;filename='$fileName_1'"); header('Cache-Control: max-age=0'); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); // 文件通过浏览器下载
//自动生成文件保存到服务器上 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //将文件保存到服务器目录下 $_SERVER['DOCUMENT_ROOT']获取的时候服务器根目录 $fj_name = $_SERVER['DOCUMENT_ROOT'].'/Uploads/excel/'.$fileName[1]; $objWriter->save($fj_name);
//读取多种格式引用方式
if(strtoupper($ext) == '.XLSX'){ $objPHPExcel = new PHPExcel_Reader_Excel2007(); } elseif (strtoupper($ext) == '.CSV'){ $objPHPExcel = new PHPExcel_Reader_CSV(); $objPHPExcel->setInputEncoding('GBK'); } else{ $objPHPExcel = new PHPExcel_Reader_Excel5(); }
PHPExcel-1.8
PHPExcel 提供了多种方式来设置单元格的背景颜色。以下是几种常用的方法:
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill() ->setFillType(PHPExcel_Style_Fill::FILL_SOLID) ->getStartColor()->setARGB('FFFF0000'); // 红色背景
$objPHPExcel->getActiveSheet()->getStyle('B2')->getFill() ->setFillType(PHPExcel_Style_Fill::FILL_SOLID) ->getStartColor()->setRGB('00FF00'); // 绿色背景
$objPHPExcel->getActiveSheet()->getStyle('A1:C3')->getFill() ->setFillType(PHPExcel_Style_Fill::FILL_SOLID) ->getStartColor()->setARGB('FF0000FF'); // 蓝色背景
PHPExcel 提供了一些颜色常量,可以通过 PHPExcel_Style_Color
类访问:
$objPHPExcel->getActiveSheet()->getStyle('D4')->getFill() ->setFillType(PHPExcel_Style_Fill::FILL_SOLID) ->getStartColor()->setRGB(PHPExcel_Style_Color::COLOR_YELLOW);
ARGB
格式:'AARRGGBB'(Alpha, Red, Green, Blue)
例如:'FFFF0000' 表示不透明的红色
RGB
格式:'RRGGBB'
例如:'FF0000' 表示红色
必须先设置填充类型(setFillType)为 FILL_SOLID,否则颜色不会生效
PHPExcel 1.8.0 及更高版本中,类名可能有所不同(如 \PhpOffice\PhpSpreadsheet\Style\Fill
)
如果使用 PhpSpreadsheet(PHPExcel 的继任者),语法类似但命名空间不同
// 创建 PHPExcel 对象 $objPHPExcel = new PHPExcel(); $sheet = $objPHPExcel->getActiveSheet(); // 设置单个单元格背景色 $sheet->getStyle('A1')->getFill() ->setFillType(PHPExcel_Style_Fill::FILL_SOLID) ->getStartColor()->setARGB('FF00FF00'); // 绿色 // 设置区域背景色 $sheet->getStyle('B2:D4')->getFill() ->setFillType(PHPExcel_Style_Fill::FILL_SOLID) ->getStartColor()->setRGB('0000FF'); // 蓝色 // 保存文件 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('example.xlsx');
在 PHPExcel 中设置单元格或区域边框颜色为黑色,可以通过以下方法实现:
$objPHPExcel->getActiveSheet()->getStyle('A1')->getBorders() ->getAllBorders() ->getColor() ->setARGB(PHPExcel_Style_Color::COLOR_BLACK);
$objPHPExcel->getActiveSheet()->getStyle('A1:C10')->getBorders() ->getAllBorders() ->getColor() ->setARGB('FF000000'); // 黑色
$styleArray = array( 'borders' => array( 'outline' => array( 'style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => 'FF000000'), ), 'inside' => array( 'style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => 'FF000000'), ), ), ); $objPHPExcel->getActiveSheet()->getStyle('A1:C10')->applyFromArray($styleArray);
$borders = $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders(); $borders->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN) ->getColor()->setARGB('FF000000'); $borders->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN) ->getColor()->setARGB('FF000000'); $borders->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN) ->getColor()->setARGB('FF000000'); $borders->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN) ->getColor()->setARGB('FF000000');
PHPExcel 提供了多种边框样式可选:
PHPExcel_Style_Border::BORDER_NONE // 无边框 PHPExcel_Style_Border::BORDER_THIN // 细线 PHPExcel_Style_Border::BORDER_MEDIUM // 中等粗细 PHPExcel_Style_Border::BORDER_DASHED // 虚线 PHPExcel_Style_Border::BORDER_DOTTED // 点线 PHPExcel_Style_Border::BORDER_THICK // 粗线 PHPExcel_Style_Border::BORDER_DOUBLE // 双线 PHPExcel_Style_Border::BORDER_HAIR // 极细线 PHPExcel_Style_Border::BORDER_MEDIUMDASHED // 中等虚线 PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT // 中等点划线 // 等等
// 创建 PHPExcel 对象 $objPHPExcel = new PHPExcel(); $sheet = $objPHPExcel->getActiveSheet(); // 设置A1单元格所有边框为黑色细线 $sheet->getStyle('A1')->getBorders()->getAllBorders() ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN) ->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLACK); // 设置B2:D5区域内外边框为黑色中等线 $styleArray = array( 'borders' => array( 'allborders' => array( 'style' => PHPExcel_Style_Border::BORDER_MEDIUM, 'color' => array('argb' => 'FF000000'), ), ), ); $sheet->getStyle('B2:D5')->applyFromArray($styleArray); // 保存文件 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('example_with_black_borders.xlsx');
|
---|