2016-05-10 9 views
0

Это довольно простой вопрос, но я не могу найти лучшее простое решение. Я пытаюсь сделать первенствовать, где столы будут рядом друг с другом в таком формате:php increment letter by number

+---+-------+-------+-------+-------+-------+-------+-------+ 
| | 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 
    } 
} 

В каждой таблице я начинаю в строке 1, и мне нужно перемещаться по горизонтали, поэтому мне нужно перемещаться в другие столбцы путем увеличения. Проблема в ячейке с названием, где мне нужны ячейки B1: H1. B1 прост, но тогда я не знаю, как увеличить колонку на 6, чтобы получить письмо H - $column + 6 не работает. Подумайте, как это сделать с помощью простого решения?

+0

'B: H' - фиксирована или они могут измениться? Вы добавляете '6' в каждый цикл. Почему вместо этого добавления не только «H»? –

ответ

3

функции Ord и CHR поможет вам

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

Примечание это будет работать до Letter // только Z ..

3

Если вы заинтересованы только в столбцах между A к Z, то @ Ответ splash58 будет работать.

Если вам нужно использовать столбцы за пределами Z, я бы рекомендовал использовать встроенные функции PHPExcel для управления адресами столбцов.

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

Или что-то вроде:

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

, который также будет работать с адресами столбцов Excel за Z

+0

Я уже понял этот предел excel, поэтому в конечном итоге использовал эту функцию. Но спасибо за ответ. –