php 如何将边框应用于所有单元格,而不是区域!

x4shl7ld  于 2023-06-20  发布在  PHP
关注(0)|答案(2)|浏览(93)

我已经让我的Excel阅读器工作,但有一个恼人的问题,我只能找到有关如何将边框应用于一个范围的单元格的信息,这对我的应用程序是无用的。
用户可以上传Excel工作表,以便以后查看。因此,单元格范围方法将不起作用,因为范围发生了变化。
是否有一个默认参数来设置所有的单元格样式等?
这是我的:

require_once ROOT . '/libs/PHPExcel/IOFactory.php';
      $excel = PHPExcel_IOFactory::load('../public_html/uploads/' . $filename);
      PHPExcel_Shared_Font::setAutoSizeMethod(PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT);
      $writer = PHPExcel_IOFactory::createWriter($excel, 'HTML');

      $writer->setUseInlineCSS(true);
      $styleArray = array(
          'borders' => array(
              'allborders' => array(
                  'style' => PHPExcel_Style_Border::BORDER_THIN
              )
          )
      );

      $excel->getActiveSheet()->getStyle('A1:B1')->applyFromArray($styleArray);
      unset($styleArray);
      $writer->save('uploads/excel-sheet.html');
      header('Location: ' . WROOT . 'uploads/excel-sheet.html');
nzk0hqpo

nzk0hqpo1#

设置将应用于整个工作簿的默认样式

$excel->getDefaultStyle()->applyFromArray($styleArray);

但是您应该能够读取已加载的任何工作表的区域,并设置该区域的样式

$excel->getActiveSheet()->getStyle(
    'A1:' . 
    $excel->getActiveSheet()->getHighestColumn() . 
    $excel->getActiveSheet()->getHighestRow()
)->applyFromArray($styleArray);
laawzig2

laawzig22#

要将边框样式应用于工作表中的整个单元格,可以使用以下代码

$objPHPExcel = new \PHPExcel();

$objPHPExcel->getActiveSheet()->getDefaultStyle()->applyFromArray(
    array(
        'borders' => array(
            'allborders' => array(
                'style' => \PHPExcel_Style_Border::BORDER_THIN,
                'color' => array('rgb' => 'FFFFFF')
            )
        )
    )
);

或使用此代码

$objPHPExcel->getActiveSheet()->getDefaultStyle()
    ->getBorders()
    ->getTop()
    ->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN)
    ->setColor(new \PHPExcel_Style_Color('FFFFFF'));
$objPHPExcel->getActiveSheet()->getDefaultStyle()
    ->getBorders()
    ->getBottom()
    ->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN)
    ->setColor(new \PHPExcel_Style_Color('FFFFFF'));
$objPHPExcel->getActiveSheet()->getDefaultStyle()
    ->getBorders()
    ->getLeft()
    ->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN)
    ->setColor(new \PHPExcel_Style_Color('FFFFFF'));
$objPHPExcel->getActiveSheet()->getDefaultStyle()
    ->getBorders()
    ->getRight()
    ->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN)
    ->setColor(new \PHPExcel_Style_Color('FFFFFF'));

相关问题