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');
|
|---|