82

我正在尝试使第一行中的单元格为粗体。

这是我为此目的创建的方法。

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 文件中的单元格不是粗体。

4

11 回答 11

134

试试这个单元格范围:

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

希望有帮助

于 2013-02-07T08:08:04.607 回答
50

尝试这个

$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true);
于 2013-12-10T06:11:34.183 回答
30
$objPHPExcel->getActiveSheet()->getStyle('1:1')->getFont()->setBold(true);

这样你就得到了完整的第一行

于 2014-09-04T19:53:33.010 回答
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);
于 2013-08-06T18:15:33.937 回答
16

用这个:

$sheet->getStyle('A1:'.$sheet->getHighestColumn().'1')->getFont()->setBold(true);
于 2018-06-25T20:41:25.780 回答
10

这些是制作细胞的一些技巧Bold,,Big fontItalic

假设我有从A到的列L

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);
于 2016-08-28T15:08:56.793 回答
8
$objPHPExcel->getActiveSheet()->getStyle("A1:".$objPHPExcel->getActiveSheet()->getHighestDataColumn()."1")->getFont()->setBold(true);

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

于 2017-07-24T17:24:12.517 回答
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);
}
于 2017-10-28T14:33:24.760 回答
2

制作粗体标题的简单方法:

$row = 1;
foreach($tittles as $index => $tittle) {
    $worksheet->getStyleByColumnAndRow($index + 1, $row)->getFont()->setBold(true);
    $worksheet->setCellValueByColumnAndRow($index + 1, $row, $tittle);
}
于 2021-02-08T06:20:33.733 回答
1

尝试这个

    $objPHPExcel = 新 PHPExcel();
    $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
                                 ->setLastModifiedBy("Maarten Balliauw")
                                 ->setTitle("Office 2007 XLSX 测试文档")
                                 ->setSubject("Office 2007 XLSX 测试文档")
                                 ->setDescription("Office 2007 XLSX 测试文档,使用 PHP 类生成。")
                                 ->setKeywords("office 2007 openxml php")
                                 ->setCategory("测试结果文件");
    $objPHPExcel->setActiveSheetIndex(0);
    $sheet = $objPHPExcel->getActiveSheet();
    $sheet->setCellValue('A1', 'No');
    $sheet->setCellValue('B1', '工作 ID');
    $sheet->setCellValue('C1', '作业完成日期');
    $sheet->setCellValue('D1', '工作存档日期');
    $styleArray = 数组(
        '字体' => 数组(
        '粗体' => 真
        )
    );
    $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

于 2017-10-30T11:58:48.600 回答
0

你可以试试

$objPHPExcel->getActiveSheet()->getStyle(1)->getFont()->setBold(true);
于 2014-07-06T05:50:43.540 回答