PHPExcel使第一行加粗


76

我试图使第一行中的单元格为粗体。

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

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 2013年

您是否尝试回显$ cell_name?它给出正确的单元名吗?
Bhavik Shah 2013年

@BhavikShah单元名称正确。
拉克什

花花公子,尝试增加字体大小。试一试。不确定。
Bhavik Shah 2013年

1
检查一下。这可能对您有帮助。
Bhavik Shah 2013年

Answers:


123

尝试此操作以获取单元格范围:

$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
史蒂文·斯科特

50

尝试这个

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

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

这样,您就可以获得完整的第一行


如何将第三行设置为粗体?
Divyesh Jesadiya

1
为我工作-2:2将整个第二行设置为粗体。getStyle(2)也为我工作。
润滑脂

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

13

用这个:

$sheet->getStyle('A1:'.$sheet->getHighestColumn().'1')->getFont()->setBold(true);

10

这些都是一些提示,使您的细胞BoldBig 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);

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

1

尝试这个

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


0

你可以试试

$objPHPExcel->getActiveSheet()->getStyle(1)->getFont()->setBold(true);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.