【发布时间】:2012-03-15 16:05:57
【问题描述】:
我一直在尝试使用下面的脚本将 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 应该从 1 而不是 0 开始这一事实之外,实际的问题是什么?是否正在生成文件?您是否收到任何错误消息?
-
保持简单,只需在您的代码中创建一个
html文件,其中包含table,并将其保存为.xls,然后使用excel 打开它。这是一个肮脏的黑客,但如果你需要做的只是将一些数据导出到excel,它就可以工作。它不会是整个系统... -
@Yaniro - 这是一个肮脏的伎俩,在大多数新版本的 MS EXcel 中都会显示警告消息 - 不是世界上最好的用户体验......如果我是的话,我会认为它非常不专业打开该文件的用户
-
@Mark Baker,该文件未生成,我也没有收到任何错误。我可以连接到数据库并且查询确实返回数据 - 只是不生成 excel 文件。我尝试将 $row 更改为 1 但没有任何乐趣。我也尝试将 $col 更改为 1... 没有成功。
-
该文件应该在运行脚本的服务器上的目录中生成...仔细检查该文件夹的用户权限...或尝试使用适当的标题保存到 php://output (并且代码中没有任何回声)直接从浏览器下载
标签: php mysql database phpexcel