2012-03-15 4 views
2

Я пытаюсь экспортировать содержимое базы данных mysql в excel, используя сценарий ниже, но безрезультатно. Я должен делать что-то неправильно:Экспорт базы данных mysql в excel

$getExcel = "SELECT name, age, course, city FROM person"; 
$res = mysql_query($getExcel); 


/** Error reporting */ 
error_reporting(E_ALL); 

date_default_timezone_set('Europe/London'); 

/** PHPExcel */ 
require_once 'Classes/PHPExcel.php'; 


// Create new PHPExcel object 
echo date('H:i:s') . " Create new PHPExcel object\n"; 
$objPHPExcel = new PHPExcel(); 

if(!$res){ 
    die("Error"); 
} 
$col = 0; 
$row = 0; 
while($row = mysql_fetch_assoc($res)) { 
    foreach($row as $key=>$value) { 
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); 
     $col++; 
    } 
    $row++; 
} 

// Set active sheet index to the first sheet, so Excel opens this as the first sheet 
$objPHPExcel->setActiveSheetIndex(0); 

// Save Excel 2007 file 
echo date('H:i:s') . " Write to Excel2007 format\n"; 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('record.xlsx'); 

Что я делаю неправильно, пожалуйста?

+0

Помимо того, что $ строка должна начинаться с 1, а не 0, что фактическая проблема? Создается ли файл? Вы получаете сообщения об ошибках? –

+0

Держите это просто, просто создайте файл 'html' в своем коде с' table' в нем и сохраните его как '.xls', затем откройте его с помощью excel. это грязный грязный хак, но он работает, если вам нужно всего лишь экспортировать некоторые данные в Excel. Это не будет целая система ... – Yaniro

+1

@ Yaniro - это грязный трюк, который вызывает предупреждение в большинстве новых версий MS EXcel - не самый большой пользовательский опыт в мире ... Я бы счел его довольно непрофессионально, если я был пользователем, открывающим этот файл –

ответ

5

Ваш вопрос, вероятно, что вы используете переменную $row в двух разных контекстах ... попробуйте это:

$row = 1; 
while($mrow = mysql_fetch_assoc($res)) { 
    $col = 0; 
    foreach($mrow as $key=>$value) { 
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); 
     $col++; 
    } 
    $row++; 
} 
+0

Хорошо пятнистый. +1 –

+0

Хорошо, это генерирует excel, но столбцы не выровнены. Например. если первая запись начинается с A1, вторая начинается с C2, затем G3 вместо всех записей начинается в столбце A. Любые идеи парней? – echez

+3

$ col = 0; должен находиться внутри цикла while, непосредственно перед циклом foreach() –

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