【问题标题】:Export mysql database to excel将mysql数据库导出到excel
【发布时间】: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 Ba​​ker,该文件未生成,我也没有收到任何错误。我可以连接到数据库并且查询确实返回数据 - 只是不生成 excel 文件。我尝试将 $row 更改为 1 但没有任何乐趣。我也尝试将 $col 更改为 1... 没有成功。
  • 该文件应该在运行脚本的服务器上的目录中生成...仔细检查该文件夹的用户权限...或尝试使用适当的标题保存到 php://output (并且代码中没有任何回声)直接从浏览器下载

标签: php mysql database phpexcel


【解决方案1】:

您的问题很可能是您在两种不同的上下文中使用变量$row ...试试这个:

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

【讨论】:

  • 好的,这会生成 excel 但列未对齐。例如。如果第一条记录从 A1 开始,第二条记录从 C2 开始,那么 G3 而不是所有记录都从 A 列开始。有什么想法吗?
  • $col = 0;应该在 while 循环内,就在 foreach() 循环之前
  • 你们两个太棒了。我永远感激不尽!
猜你喜欢
  • 2020-05-15
  • 2011-01-12
  • 1970-01-01
  • 2014-04-08
  • 2019-05-25
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多