使用数字 依次获取excel键值
2023-09-04 PHP 746
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条评论