所以我需要我的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文件非常有用,并且有其他选项来格式化它或根据生成报告的需要添加公式。

09-25 20:49