使用数字 依次获取excel键值
2023-09-04 PHP 1118
class Tool{
// 定义一个函数,根据给定的数字返回对应的列名
public static function getColumnName(int $num): string
{
// 初始化一个空字符串
$columnName = "";
$num++;
// 循环直到数字为0
while ($num > 0) {
// 计算当前数字对26取余的结果,作为列名的最后一个字母
$remainder = $num % 26;
// 如果余数为0,说明当前数字是26的倍数,那么列名的最后一个字母应该是Z
if ($remainder == 0) {
$columnName = "Z" . $columnName;
// 将数字减去26,然后除以26,得到下一轮的数字
$num = ($num - 26) / 26;
} else {
// 如果余数不为0,那么列名的最后一个字母应该是余数对应的字母,从A到Y
$columnName = chr($remainder + 64) . $columnName;
// 将数字除以26,得到下一轮的数字
$num = floor($num / 26);
}
}
// 返回列名
return $columnName;
}
// 定义一个函数,根据给定的列名返回对应的键值
public static function getColumnValue(string $columnName): int
{
// 初始化一个变量,存储键值
$columnValue = 0;
// 将列名转换为大写字母
$columnName = strtoupper($columnName);
// 获取列名的长度
$length = strlen($columnName);
// 循环遍历列名的每个字母,从左到右
for ($i = 0; $i < $length; $i++) {
// 获取当前字母的ASCII码,减去64,得到当前字母对应的数字,从1到26
$num = ord($columnName[$i]) - 64;
// 将当前数字乘以26的相应次方,然后累加到键值中
$columnValue += $num * pow(26, $length - $i - 1);
}
// 将键值减去1,得到从0开始的键值
$columnValue -= 1;
// 返回键值
return $columnValue;
}
}
Tool::getColumnName(0);//A
Tool::getColumnValue('A');//0 很赞哦! (0)
相关文章
文章评论
-
-
-
0条评论