发新帖

[PHP] PHPExcel-1.8

零下一度 2020-3-12 966

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 中设置单元格背景颜色

PHPExcel 提供了多种方式来设置单元格的背景颜色。以下是几种常用的方法:

方法一:使用 getStyle() 和 getFill()
$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' 表示红色

注意事项

  1. 必须先设置填充类型(setFillType)为 FILL_SOLID,否则颜色不会生效

  2. PHPExcel 1.8.0 及更高版本中,类名可能有所不同(如 \PhpOffice\PhpSpreadsheet\Style\Fill

  3. 如果使用 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 中设置表格边框颜色为黑色

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










最新回复 (0)
返回
零下一度
主题数
931
帖子数
0
注册排名
1