原理是通过上传获取临时文件再phpexcel读取临时文件行数和列数,注意:只要有样式的或者有数据的都会被读取算作列数,这种情况在数据处理的时候过滤一下数据就行了。我是先通过循环列数再循环行数,一层循环里套一成循环组装数据:
for ($f=$start;$f<$HighestRow;$f++){
$OrderDetail = array();
$om_OrderDetaillie = array('B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V');
$om_OrderDetailhang = array($f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f,$f);
$om_OrderDetailbiaoname = array('cCusAbbName','cItemSeason','cItemName','cItemNo','cPO','dDelive','nprice','iPCS','nMoney1','dOrderDate','nUsdRmbRate','nUsdGrossProfit','nGJ','nUSDMoney','nMoney2','cTitle','iRecDays','dRecMonth','cVenAbbName','cAccName','cRemark');
for($i=0;$i<count($om_OrderDetaillie);$i++){
$cell = $sheettmp->getCell($om_OrderDetaillie[$i].$om_OrderDetailhang[$i])->getValue();
if($cell instanceof PHPExcel_RichText){ //富文本转换字符串
$cell = $cell->__toString();
}
$OrderDetail[$om_OrderDetailbiaoname[$i]] = $cell;
}
}
上面的组装数据有冗余,自己可以完善。
PHP直接读取时间格式会有问题,excel 的日期是从 1900-01-01 开始计算的(php 是从 1970-01-01)两者间有一个天数差 25569,时间是格林威治时间,得转换时间
$d = 25569;
$t = 24 * 60 * 60;
echo gmdate('Y-m-d H:i:s', (41728.732916667 - $d) * $t);