我正在将数据从php数组导出到xls文件。如果我只是用这样的回声将它们写入文件,一切都会很好:
function toExcel($arrayOfData) {
$data = null;
$rowCounter = 0;
if(is_array($arrayOfData) === true) {
foreach($arrayOfData as $key=>$value) {
$colCounter = 0;
if($key == 0) {
foreach(array_keys($arrayOfData[0]) as $hKey => $header) {
echo xlsWriteLabel(0, $hKey, $header);
}
$rowCounter++;
}
if(is_array($value) === true) {
foreach($value as $data) {
echo xlsWriteLabel($rowCounter, $colCounter, $data);;
$colCounter++;
}
$rowCounter++;
}
}
}
}
但我想要的只是在一个变量中返回一个二进制代码,比如:
function toExcel($arrayOfData) {
$data = null;
$rowCounter = 0;
if(is_array($arrayOfData) === true) {
foreach($arrayOfData as $key=>$value) {
$colCounter = 0;
if($key == 0) {
foreach(array_keys($arrayOfData[0]) as $hKey => $header) {
$data .= xlsWriteLabel(0, $hKey, $header);
}
$rowCounter++;
}
if(is_array($value) === true) {
foreach($value as $data) {
$data .= xlsWriteLabel($rowCounter, $colCounter, $data);
$colCounter++;
}
$rowCounter++;
}
}
}
return $data;
}
当我这样做,然后做回显到Excel($somearray);它将创建损坏的xls。
知道为什么以及如何修复它吗?我有xls文件的开始和结束的其他功能,所以如果有人想的话,问题就不存在了。
好的,所以我发现范围有问题,看起来应该是:
function toExcel($arrayOfData) {
$data = xlsBOF();
$rowCounter = 0;
if(is_array($arrayOfData) === true) {
foreach($arrayOfData as $key=>$value) {
$colCounter = 0;
if($key == 0) {
foreach(array_keys($arrayOfData[0]) as $hKey => $header) {
$data .= xlsWriteLabel(0, $hKey, $header);
}
$rowCounter++;
}
if(is_array($value) === true) {
foreach($value as $val) {
$data .= xlsWriteLabel($rowCounter, $colCounter, $val);
$colCounter++;
}
$rowCounter++;
}
}
}
$data .= xlsEOF();
return $data;
}