今天客户给我反映了一个之前做的自定义表单系统问题,导出报表出错,我导出报表用的是PHPExcel。看了一下错误信息是“Invalid cell coordinate [1”,直接懵逼,黑人问号???
百度翻译了一下,应该是“无效的单元格坐标”,然而我写的代码怎么可能有错,我这边都是好的。(程序员:我这里都是好的)
后来发现客户自定义超过了26项,导出报表时候超出了26列,也就是26个英文字母用光了。。。ASCII码表的Z后面就是[,正好对应了上面的错误信息。
又百度了下,超过26列的情况下,excel要用AA1这样列行来对应单元格了。所以我们需要一个10进制转26进制的代码,懒的写,所以直接百度,还真有!作者是OSC的 @明澈,下面代码与作者的相比略有修改。
/** * 获取excel表格里指定单元的名称索引 * 如第1行第1列: * 返回A1 * 第27行第二列: * 返回AA1: * @param int $col 列,从1开始 * @param int $row 行,从1开始 * @return string */ function getExcelCeilIndex($col, $row) { if($row > 0 && $col > 0) { $str = 'ZABCDEFGHIGKLMNOPQRSTUVWXY'; $col_str = ''; do { $col_tmp = $col % 26; $col = $col_tmp == 0 ? intval($col / 26) - 1 : intval($col / 26); $col_str = $str[$col_tmp] . $col_str; }while($col); return $col_str . $row; } return false; }