php 按数字递增字母

问题描述 投票:0回答:3

这是一个非常简单的问题,但我找不到最好的简单解决方案。我正在尝试呈现 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
    }
}

在每个表中,我从第 1 行开始,我需要水平移动,所以这就是为什么我需要通过递增移动到其他列。问题出在我需要单元格 B1:H1 的标题单元格中。 B1 很简单,但我不知道如何将列增加 6 以获得字母 H -

$column + 6
不起作用。知道如何使用简单的解决方案吗?

php excel phpexcel increment
3个回答
4
投票

如果您只对

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 列地址

3
投票

函数 ord 和 chr 会帮助你

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

请注意,这将一直有效,直到字母// Z only..


0
投票

对于使用更新的 PHPSpreadsheet 库寻找正确方法的任何人:

use PhpOffice\PhpSpreadsheet\Cell\Coordinate;

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

另见API 文档.

© www.soinside.com 2019 - 2024. All rights reserved.