将mysql数据库导出为excel
我一直在尝试使用下面的脚本将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');
我在做什么错了?
你的问题是,可能的是,你正在使用的变量$row
在两个不同的情境...试试这个:
$row = 1;
while($mrow = mysql_fetch_assoc($res)) {
$col = 0;
foreach($mrow as $key=>$value) {
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
$col++;
}
$row++;
}
斑点。 +1 – 2012-03-15 16:33:13
好吧,这会生成excel,但列未对齐。例如。如果第一条记录从A1开始,第二条记录从C2开始,然后G3而不是所有记录从A列开始。任何想法的家伙? – echez 2012-03-15 16:46:53
$ col = 0;应该在while循环中,紧接在foreach()循环之前 – 2012-03-15 17:00:26
除了一个事实,即$行应为1而不是0开始,那是什么实际的问题?文件是否正在生成?你是否收到任何错误讯息? – 2012-03-15 16:11:35
保持简单,只需在代码中用'table'创建一个'html'文件,并将其保存为'.xls',然后用excel打开它。这是一个肮脏的肮脏的黑客,但它的工作如果你需要做的是出口一些数据到Excel。它不会是整个系统... – Yaniro 2012-03-15 16:11:42
@Yaniro - 这是一个肮脏的伎俩,在大多数新版本的MS EXcel中引发警告信息 - 不是世界上最伟大的用户体验......我认为它很漂亮不专业如果我是用户打开该文件 – 2012-03-15 16:16:42