PHP通过数字递增字母

这是非常简单的问题,但我找不到最好的简单的解决scheme。 我试图渲染Excel表格将以这种格式彼此相邻:

+---+-------+-------+-------+-------+-------+-------+-------+ | | B | C | D | E | F | G | H | +---+-------+-------+-------+-------+-------+-------+-------+ | 1 | TITLE | +---+-------------------------------------------------------+ | 2 | IN | OUT | NETTO | TEXT | TEXT | TEXT | TEXT | +---+-------+-------+-------+-------+-------+-------+-------+ | 3 | value | value | value | value | value | value | value | +---+-------+-------+-------+-------+-------+-------+-------+ 

为了渲染标题,我从B1单元格开始到H1单元格,所以我的第一次尝试是这样的:

 $column = 'B'; // default column number foreach ($data as $tables) { $r = 1; // row number foreach ($tables as $table) { $this->excel->getActiveSheet()->SetCellValue($column . $r . ':' . $column + 6 . $r, $connector_name); $r++; // then row with header r++ // then row with values $column++; // other table starting in cell I1 } } 

在每个表中,我从第一行开始,我需要移动水平,这就是为什么我需要通过递增移动到其他列。 问题是在标题单元格,我需要单元格B1:H1。 B1是简单的,但是我不知道如何增加6列以获得字母H – $column + 6不起作用。 有任何想法如何用简单的解决scheme呢?

函数ord和chr将帮助你

 echo chr(ord($column)+6); // H 

请注意,这将工作,直到信/ / Z只..

如果您只对AZ之间A列感兴趣,那么@ splash58的答案将起作用。

如果你需要使用Z以外的列,那么我build议使用PHPExcel的内置函数来处理列地址。

 $column = 'B'; $adjust = 6; $column = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($column) + $adjust - 1); 

或者类似的东西:

 $column = 'B'; $adjust = 6; do { $column++; } while (--$adjust > 0); 

这也将与超过Z Excel列地址一起使用