php 按数字增加字母
php increment letter by number
这是一个非常简单的问题,但我找不到最简单的解决方案。我正在尝试渲染 excel,其中 table 将以这种格式彼此相邻:
+---+-------+-------+-------+-------+-------+-------+-------+
| | 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
}
}
在每个 table 中,我从第 1 行开始,我需要水平移动,所以这就是为什么我需要通过递增移动到其他列。问题出在我需要单元格 B1:H1 的标题单元格中。 B1 很简单,但我不知道如何将列递增 6 以获得字母 H - $column + 6
不起作用。知道如何使用简单的解决方案吗?
函数 ord 和 chr 会帮助你
echo chr(ord($column)+6); // H
请注意,这仅适用于字母// Z..
如果您只对 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);
这也适用于 Z
之外的 Excel 列地址
这是一个非常简单的问题,但我找不到最简单的解决方案。我正在尝试渲染 excel,其中 table 将以这种格式彼此相邻:
+---+-------+-------+-------+-------+-------+-------+-------+
| | 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
}
}
在每个 table 中,我从第 1 行开始,我需要水平移动,所以这就是为什么我需要通过递增移动到其他列。问题出在我需要单元格 B1:H1 的标题单元格中。 B1 很简单,但我不知道如何将列递增 6 以获得字母 H - $column + 6
不起作用。知道如何使用简单的解决方案吗?
函数 ord 和 chr 会帮助你
echo chr(ord($column)+6); // H
请注意,这仅适用于字母// Z..
如果您只对 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);
这也适用于 Z