我将数据从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;
}
当我这样做,然后回显toExcel($ somearray);它会创建破碎的xls。
知道为什么以及如何解决这个问题?我有其他函数用于xls文件的开始和结束,所以如果有人想的话就不存在问题。
答案 0 :(得分:1)
好的,所以我发现,范围存在问题,它应该如下:
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;
}