现在有这样一些要写入到excel表头的信息:
$title = [
'序号', '订单编号', 'SKU', '商品名称', '供应商ID',
'规格', '型号', '进货单价', '数量', '金额',
'运费', '下单日期', '付款时间', '一级分类', '二级分类',
'三级分类', '供应商类型', '订单类型', '订单状态', '店铺名称',
'店铺编码', '进货总价', '销售单价', '销售总价', '品牌编码',
'品牌', '商品链接', '市场价', '销售价/会员价', '非会员价',
'让利金', '市场提成比例', '毛利率', '审核状态', '上架状态',
'支付状态', '结算时间', '完结时间', '库存', '是否含税',
'是否包邮', 'SPU/平台货号', '订单来源版块',
];
共有43个字段,也就是43列,远远超过Z列,会出现AA,AB,AC……等,要达到这样的效果:
$title = [
'A' => 序号', 'B'=>'订单编号', 'C'=>'SKU', 'D' => '商品名称', 'E'=> '供应商ID',
'F' => '规格', 'G' => '型号', 'H' => '进货单价', 'I' => '数量', 'J' => '金额',
'K' => '运费', 'L' => '下单日期', 'M' => '付款时间', 'N' => '一级分类', 'O' => '二级分类',
'P' => '三级分类', 'Q' => '供应商类型', 'R' => '订单类型', 'S' => '订单状态', 'T' => '店铺名称',
'U' => '店铺编码', 'V' => '进货总价', 'W' => '销售单价', 'X' => '销售总价', 'Y' => '品牌编码',
'Z' => '品牌', 'AA' => '商品链接', 'AB' => '市场价', 'AC' => '销售价/会员价', 'AD' => '非会员价',
'AE' => '让利金', 'AF' => '市场提成比例', 'AG' => '毛利率', 'AH' => '审核状态', 'AI' => '上架状态',
'AJ' => '支付状态', 'AK' => '结算时间', 'AL' => '完结时间', 'AM' => '库存', 'AN' => '是否含税',
'AO' => '是否包邮', 'AP' => 'SPU/平台货号', 'AQ' => '订单来源版块',
];
请写出算法???????????
参考答案:
/**
* 数字转字母 (类似于Excel列标)
* @param Int $num 数字
* @param Int $start 字母起始值
* @return String 返回字母
*/
function intToChr($num, $start = 65) {
$str = '';
if (floor($num / 26) > 0) {
$str .= intToChr(floor($num / 26)-1);
}
return $str . chr($num % 26 + $start);
}
当然,答案不止这一种,也有其它方法。
|