所以我需要我的SQL表是可下载的。现在我的php文件创建了一个excel文件并强制下载,但是excel文件只有一个包含表数据的大数组。
这是我的密码
$sql = mysql_query("SELECT * FROM table");
while ($row_user = mysql_fetch_assoc($sql))
{ $userinfo[] = $row_user;
print_r($row_user);
header("Content-Disposition: attachment; filename=\"papi.xls\"");
header("Content-Type: application/vnd.ms-excel;");
header("Pragma: no-cache");
header("Expires: 0");
$file = fopen("php://output","w");
foreach($userinfo as $data)
{
fputcsv($file,explode(',',$data),"\t");
}
fclose($file);
}
如有任何帮助,将不胜感激,提前谢谢。
最佳答案
有几个PHP库可以帮助您在强制下载之前格式化输出excel文件。我在使用PHPExcel方面有很好的经验。
使用PHPExcel不会改变访问表中数据的方式,但会改变处理MySQL结果的方式:
//Collect result set
$data = array();
while ($row = mysql_fetch_assoc($sql)){ $data[] = $row; }
//initialize PHPExcel object
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("AuthorName")->setTitle("DocumentTitle");
//Write Column Titles into first Row
$col = 'A';
foreach($data[0] as $key => $val){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($col.1, $key);
$col++;
}
//Write Data
for($i = 0; $i < count($data); $i++){
$col = 'A';
$row = 2 + $i;
foreach($data[$i] as $val){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($col.$row, $val);
$col++;
}
}
//Set Header
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="DataExport.xlsx"');
header('Cache-Control: max-age=0');
//Output Results
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
ob_end_clean();
$objWriter->save('php://output');
这绝不是唯一的选择,但是,我发现这个库对于将数据导出到XLSX文件非常有用,并且有其他选项来格式化它或根据生成报告的需要添加公式。