【发布时间】:2020-04-14 15:03:10
【问题描述】:
我想为此生成坐标
$sheet->setCellValue($pCoordinate, $pValue);
a $pCoodrinates 是一个字母,然后是一个数字,例如 A1, B1 , C1 ,例如第一行然后下一行是 A2, B2, C2 并且下一行是 3
这是我现在的代码
class SpreadSheetHelper
{
private static $alphabet = 'ABCDEFGHIJKLMNOPQRSTUYVWXYZ';
public static function createSpreadSheet($data = []) {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
foreach ($data as $rowIndex => $row) {
foreach ($row as $columnIndex => $columnValue) {
$pCoordinate = self::getAlphabetCoordinate($rowIndex, $columnIndex);
$pValue = $columnValue;
$sheet->setCellValue($pCoordinate, $pValue);
}
}
return $spreadsheet;
}
private static function getAlphabetCoordinate($rowIndex, $columnIndex) {
$letter = strtoupper(substr(self::$alphabet, $columnIndex, 1));
$number = $rowIndex + 1;
return "$letter$number";
}
}
正如您所看到的,$alphabet 是硬编码的并且是有限的,它到达了应该以 AA, AB, AC,AD,AE,AF 开头的最后一个字母,这就是我想要生成的。知道怎么做吗?
【问题讨论】:
-
您可以编写一个简单的函数,该函数返回一个整数的 base-26 值。您将遍历获得 mod(26) 的数字,将其转换为字母,然后使用其余数字获得下一个数字 - 冲洗并重复。
标签: php file spreadsheet axlsx generate