首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHPExcel为电子表格中的所有工作表设置边框和格式

PHPExcel为电子表格中的所有工作表设置边框和格式
EN

Stack Overflow用户
提问于 2013-10-16 15:54:00
回答 3查看 120.6K关注 0票数 20

我现在正在尝试为我的电子表格设置所有的边框,还有格式设置,比如自动调整大小。

我下面的代码对于工作表1是有效的。电子表格中的所有其他工作表都是完全未受影响的。我一直在尝试让它与这个电子表格中的所有其他工作表一起工作,但没有成功。

关于如何全局设置格式以便所有工作表都有边框和自动调整大小,您有什么想法吗?此电子表格中所有工作表的布局都是相同的。我正在导出到XLSX文件。

干杯,

代码语言:javascript
复制
/**autosize*/
for ($col = 'A'; $col != 'P'; $col++) {
    $objPHPExcel->getActiveSheet()->getColumnDimension($col)->setAutoSize(true);
}


/** Borders for all data */
   $objPHPExcel->getActiveSheet()->getStyle(
    'A2:' . 
    $objPHPExcel->getActiveSheet()->getHighestColumn() . 
    $objPHPExcel->getActiveSheet()->getHighestRow()
)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);



/** Borders for heading */
   $objPHPExcel->getActiveSheet()->getStyle(
    'A1:O1'
)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);

额外的问题:我目前已经设置了标题。标题会出现在图纸1上,但不会出现在任何其他图纸中。是否可以在所有工作表中显示标题?标题设置在第1行,结果从第2行向下。

代码语言:javascript
复制
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Asset_id');
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Asset_name');
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Asset_type');
$objPHPExcel->getActiveSheet()->setCellValue('D1', 'Asset_make');
$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Asset_model');
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-16 16:10:40

您可以为整个工作簿(所有工作表)设置默认样式:

代码语言:javascript
复制
$objPHPExcel->getDefaultStyle()
    ->getBorders()
    ->getTop()
        ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getDefaultStyle()
    ->getBorders()
    ->getBottom()
        ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getDefaultStyle()
    ->getBorders()
    ->getLeft()
        ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getDefaultStyle()
    ->getBorders()
    ->getRight()
        ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

代码语言:javascript
复制
  $styleArray = array(
      'borders' => array(
          'allborders' => array(
              'style' => PHPExcel_Style_Border::BORDER_THIN
          )
      )
  );
$objPHPExcel->getDefaultStyle()->applyFromArray($styleArray);

这可以用于所有的样式属性,而不仅仅是边框。

但是,列自动调整大小是structural而不是stylistic,并且必须为每个工作表上的每一列单独设置。

编辑

请注意,默认工作簿样式仅适用于Excel5编写器

票数 43
EN

Stack Overflow用户

发布于 2016-05-01 14:19:46

代码语言:javascript
复制
for ($s=65; $s<=90; $s++) {
    //echo chr($s);
    $objPHPExcel->getActiveSheet()->getColumnDimension(chr($s))->setAutoSize(true);
}
票数 1
EN

Stack Overflow用户

发布于 2016-05-21 08:19:46

回答您的extra question

您可以使用以下命令设置应在每页上重复的行:

$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 5);

现在,将重复第1、2、3、4和5行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19397953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档