PHPExcel:如何使第一行加粗?

90

我试图使第一行的单元格加粗。

这是我为此创建的方法。

function ExportToExcel($tittles,$excel_name)
 {
  $objPHPExcel = new PHPExcel();
  $objRichText = new PHPExcel_RichText();
  // Set properties
  $objPHPExcel->getProperties()->setCreator("SAMPLE1");
  $objPHPExcel->getProperties()->setLastModifiedBy("SAMPLE1");
  $objPHPExcel->getProperties()->setTitle("SAMPLE1");
  $objPHPExcel->getProperties()->setSubject("SAMPLE1");
  $objPHPExcel->getProperties()->setDescription("SAMPLE1");


  // Add some data
  $objPHPExcel->setActiveSheetIndex(0);

  $letters = range('A','Z');
  $count =0;
  $cell_name="";
  foreach($tittles as $tittle)
  {
   $cell_name = $letters[$count]."1";
   $count++;
   $value = $tittle;
   $objPHPExcel->getActiveSheet()->SetCellValue($cell_name, $value);
   // Make bold cells
   $objPHPExcel->getActiveSheet()->getStyle($cell_name)->getFont()->setBold(true);
  }
  // Save Excel 2007 file
  $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  //$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
  $objWriter->save($excel_name.".xlsx");
 }

问题在于输出的 Excel 文件中,单元格没有加粗。


1
它是将所有行都加粗还是没有一行加粗? - Bhavik Shah
你尝试过输出 $cell_name 吗?它是否给出了正确的单元格名称? - Bhavik Shah
@BhavikShah 细胞名称是正确的。 - Rakesh
兄弟,试着增加字体大小。试试看。不确定。 - Bhavik Shah
1
请查看此链接(http://stackoverflow.com/questions/12797280/creating-bold-text-cells-with-phpexcel?rq=1),它可能会对您有所帮助。 - Bhavik Shah
11个回答

142

尝试使用此代码来选择单元格范围:

$from = "A1"; // or any value
$to = "B5"; // or any value
$objPHPExcel->getActiveSheet()->getStyle("$from:$to")->getFont()->setBold( true );

或单个细胞

$cell_name = "A1";
$objPHPExcel->getActiveSheet()->getStyle( $cell_name )->getFont()->setBold( true );

4
不,只需为这两个单元格使用A1或A1:B1。 - Steven Scott

51

试一试

$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true);

34
$objPHPExcel->getActiveSheet()->getStyle('1:1')->getFont()->setBold(true);

那样你就能获得完整的第一行。


如何将我的第三行设置为粗体? - Divyesh Jesadiya
2
对我有用 - 2:2 将整个第二行设置为粗体。getStyle(2) 对我也起作用。 - Grease
1
对我没用。。我不得不设置特定的起点/终点坐标 :-( - Vlado
以这种方式选择整行不起作用。 - Aak

19

假设标题在第一行,从A1开始,而且您知道有多少个标题,这是我的解决方案:

$header = array(
    'Header 1',
    'Header 2'
);

$objPHPExcel = new PHPExcel();
$objPHPExcelSheet = $objPHPExcel->getSheet(0);
$objPHPExcelSheet->fromArray($header, NULL);
$first_letter = PHPExcel_Cell::stringFromColumnIndex(0);
$last_letter = PHPExcel_Cell::stringFromColumnIndex(count($header)-1);
$header_range = "{$first_letter}1:{$last_letter}1";
$objPHPExcelSheet->getStyle($header_range)->getFont()->setBold(true);

18
请使用这个:
$sheet->getStyle('A1:'.$sheet->getHighestColumn().'1')->getFont()->setBold(true);

10

以下是使单元格加粗、使用大字体和斜体的一些提示

假设我有从 AL 的列

A1 是您的起始单元格

L1 是您的最后一个单元格

$objPHPExcel->getActiveSheet()->getStyle('A1:L1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A1:L1')->getFont()->setSize(16);
$objPHPExcel->getActiveSheet()->getStyle('A1:L1')->getFont()->setItalic(true);

8
$objPHPExcel->getActiveSheet()->getStyle("A1:".$objPHPExcel->getActiveSheet()->getHighestDataColumn()."1")->getFont()->setBold(true);

我发现这是一个可行的解决方案,你可以用行号替换两个1实例。 HighestDataColumn函数返回例如C或Z,它提供了包含任何数据的工作表中最后/最高的列。还有一个getHighestColumn(),它包括具有样式或属于其他功能但为空的单元格。


2
这个操作会遍历一行中的可变数量的列,在这个例子中是第一行:
$rownumber = 1;
$row = $this->objPHPExcel->getActiveSheet()->getRowIterator($rownumber)->current();

$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);

foreach ($cellIterator as $cell) {
    $cell->getStyle()->getFont()->setBold(true);
}

2
制作加粗标题的简单方法:
$row = 1;
foreach($tittles as $index => $tittle) {
    $worksheet->getStyleByColumnAndRow($index + 1, $row)->getFont()->setBold(true);
    $worksheet->setCellValueByColumnAndRow($index + 1, $row, $tittle);
}

1

尝试这个

    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
                                 ->setLastModifiedBy("Maarten Balliauw")
                                 ->setTitle("Office 2007 XLSX Test Document")
                                 ->setSubject("Office 2007 XLSX Test Document")
                                 ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
                                 ->setKeywords("office 2007 openxml php")
                                 ->setCategory("Test result file");
    $objPHPExcel->setActiveSheetIndex(0);
    $sheet = $objPHPExcel->getActiveSheet();
    $sheet->setCellValue('A1', 'No');
    $sheet->setCellValue('B1', '工作ID');
    $sheet->setCellValue('C1', '工作完成日期');
    $sheet->setCellValue('D1', '工作归档日期');
    $styleArray = array(
        'font' => array(
        'bold' => true
        )
    );
    $sheet->getStyle('A1')->applyFromArray($styleArray);
    $sheet->getStyle('B1')->applyFromArray($styleArray);
    $sheet->getStyle('C1')->applyFromArray($styleArray);
    $sheet->getStyle('D1')->applyFromArray($styleArray);
    $sheet->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1);
    

这会给我输出以下链接的结果。(https://www.screencast.com/t/ZkKFHbDq1le)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接