将mysql数据库导出为ex​​cel

问题描述:

我一直在尝试使用下面的脚本将mysql数据库的内容导出为ex​​cel无济于事。我必须做一些错误的事情:将mysql数据库导出为ex​​cel

$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开始,那是什么实际的问题?文件是否正在生成?你是否收到任何错误讯息? – 2012-03-15 16:11:35

+0

保持简单,只需在代码中用'table'创建一个'html'文件,并将其保存为'.xls',然后用excel打开它。这是一个肮脏的肮脏的黑客,但它的工作如果你需要做的是出口一些数据到Excel。它不会是整个系统... – Yaniro 2012-03-15 16:11:42

+1

@Yaniro - 这是一个肮脏的伎俩,在大多数新版本的MS EXcel中引发警告信息 - 不是世界上最伟大的用户体验......我认为它很漂亮不专业如果我是用户打开该文件 – 2012-03-15 16:16:42

你的问题是,可能的是,你正在使用的变量$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 – 2012-03-15 16:33:13

+0

好吧,这会生成excel,但列未对齐。例如。如果第一条记录从A1开始,第二条记录从C2开始,然后G3而不是所有记录从A列开始。任何想法的家伙? – echez 2012-03-15 16:46:53

+3

$ col = 0;应该在while循环中,紧接在foreach()循环之前 – 2012-03-15 17:00:26