2015-10-21 4 views
3

Я использую Codeigniter и PHPexcelTo, чтобы попытаться написать массив из результата db на листе excel.Экспорт массива в PHPExcel для создания массива для преобразования строки

У меня есть массив из следующих данных.

Array 
(
[0] => stdClass Object 
    (
     [ORDER] => 12334 
     [DATE] => 2015-10-05 
     [TEXT] => TEST 
     [TIME] => 06:03:03 
     [STATUS] => 1 

    ) 

[1] => stdClass Object 
    (
     [ORDER] => 99999 
     [DATE] => 2015-10-05 
     [TEXT] => TEST2 
     [TIME] => 08:03:03 
     [STATUS] => 0 
    ) 

)

При попытке записать данные в файл, используя первенствует phpexcel я получаю объект класса stdClass не могут быть преобразованы ошибки строки. Я хотел бы и excel файл с именами столбцов как Order, Date, Text, Time Состояние и строки, заполненные соответствующими значениями.

Вот мой текущий код

$this->load->library('excel'); 
    $this->excel->setActiveSheetIndex(0); 
    $this->excel->getActiveSheet()->setTitle('test worksheet'); 
    $this->excel->getActiveSheet()->fromArray($ordersArray, NULL, 'A1'); 

    $filename='export.xls'; //save our workbook as this file name 
    header('Content-Type: application/vnd.ms-excel'); //mime type 
    header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name 
    header('Cache-Control: max-age=0'); //no cache 

    //save it to Excel5 format (excel 2003 .XLS file), change this to 'Excel2007' (and adjust the filename extension, also the header mime type) 
    //if you want to save it as .XLSX Excel 2007 format 
    $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); 
    //force user to download the Excel file without writing it to server's HD 
    $objWriter->save('php://output'); 

Я считаю, что его проблемы с объектами в пределах массива, но я не уверен, как заставить его работать.

ответ

4

Вы должны бросить объекты, массивы первых, чтобы сделать его 2d-массив:

array_walk(
    $ordersArray, 
    function (&$row) { 
     $row = (array) $row; 
    } 
); 
$this->excel->getActiveSheet()->fromArray($ordersArray, NULL, 'A1'); 
+0

благодаря Марку, как бы я получить имена столбцов там? – rob

+0

Вы имеете в виду строку заголовка? Вам нужно будет извлечь эти ключи отдельно, используя что-то вроде '$ headers = array_keys ($ ordersArray [0]);' сначала и записать этот массив в 'A1', тогда ваш фактический' $ ordersArray' в 'A2' –

+0

идеален, работал в первый раз – rob

Смежные вопросы