如何为 Xlsx 文件生成 pCoordinates
how to generate pCoordinates for Xlsx files
我想为此生成坐标
$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 开头,这就是我想要生成的。知道怎么做吗?
您可以利用 ASCII-table:
<?php
//Number of rows and columns
$rows = 3;
$cols = 40;
$pcoords = array();
for($current_row=1;$current_row<$rows+1;$current_row++) {
$alpha_index = 65;
$alpha_pref_index = 65;
$alpha_count = 0;
$pref_letter = '';
for($current_col=0;$current_col<$cols;$current_col++) {
$col_letter = chr($alpha_index);
$pcoords[] = $pref_letter . $col_letter. $current_row;
$alpha_count++;
if ($alpha_count == 26) {
$alpha_count = 0;
$alpha_index = 65;
$pref_letter = chr($alpha_pref_index);
$alpha_pref_index++;
}
else {
$alpha_index++;
}
}
}
echo '<pre>';
print_r($pcoords);
echo '</pre>';
我想为此生成坐标
$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 开头,这就是我想要生成的。知道怎么做吗?
您可以利用 ASCII-table:
<?php
//Number of rows and columns
$rows = 3;
$cols = 40;
$pcoords = array();
for($current_row=1;$current_row<$rows+1;$current_row++) {
$alpha_index = 65;
$alpha_pref_index = 65;
$alpha_count = 0;
$pref_letter = '';
for($current_col=0;$current_col<$cols;$current_col++) {
$col_letter = chr($alpha_index);
$pcoords[] = $pref_letter . $col_letter. $current_row;
$alpha_count++;
if ($alpha_count == 26) {
$alpha_count = 0;
$alpha_index = 65;
$pref_letter = chr($alpha_pref_index);
$alpha_pref_index++;
}
else {
$alpha_index++;
}
}
}
echo '<pre>';
print_r($pcoords);
echo '</pre>';