如何在excel php的3个选项卡中导出数据库表

如何在excel php的3个选项卡中导出数据库表,php,mysqli,export-to-excel,Php,Mysqli,Export To Excel,我的页面上有一个按钮,可以将表从数据库导出到excel,分为三组。很好用。我想做的是将每个组导出到一个单独的选项卡中 这是我的密码: //出口 header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=feis_history.csv'); header('Expi

我的页面上有一个按钮,可以将表从数据库导出到excel,分为三组。很好用。我想做的是将每个组导出到一个单独的选项卡中

这是我的密码: //出口

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=feis_history.csv');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');

$output = fopen("php://output", "w"); 

//GRADES
fputcsv($output, array('GRADES'));
fputcsv($output, array('First Name', 'Competition Level', 'Competition Name', 'Date', 'Dance Name', 'Competition Number','Number of Competitors', 'Dancer`s Placement', 'Dancer`s Score', 'judge 1 comments', 'notes'));  

$sql = "SELECT `dancer_name`, `competition_level1`, `feis_entered`, `date`, `dance_name1`, `competition_number1`, `number_competitors1`, `dancer_placement1`, `dancer_score1`, `judge_comment1`, `notes`  FROM `mark_cards1` WHERE user_id = '$id' AND grades = 'yes' ORDER BY YEAR(date) ASC, dancer_name, feis_entered";
$res = mysqli_query($con,$sql);

while($row = mysqli_fetch_assoc($res))
{
    fputcsv($output, $row );  
}

//CHAMPION
fputcsv($output, array('CHAMPION'));
fputcsv($output, array('First Name', 'Competition Level', 'Competition Name', 'Date', 'Dance Name', 'Competition Number','Number of Competitors', 'Dancer`s Placement', 'Was Recalled?', 'Recalled Dancers', 'Dancer`s Score', 'judge 1 comments', 'judge 2 comments', 'judge 3 comments', 'notes'));  

$sql = "SELECT `dancer_name`, `competition_level1`, `feis_entered`, `date`, `dance_name1`, `competition_number1`, `number_competitors1`, `dancer_placement1`, `was_recalled`, `recall1`, `dancer_score1`, `judge_comment1`, `judge_comment2`, `judge_comment3`, `notes`  FROM `mark_cards1` WHERE user_id = '$id' AND champion = 'yes' ORDER BY YEAR(date) ASC, dancer_name, feis_entered";
$res = mysqli_query($con,$sql);

while($row = mysqli_fetch_assoc($res))
{
    fputcsv($output, $row );  
}

//MAJOR
fputcsv($output, array('MAJOR'));
fputcsv($output, array('First Name', 'Competition Level', 'Competition Name', 'Date', 'Dance Name', 'Competition Number','Number of Competitors', 'Dancer`s Placement', 'Was Recalled?', 'Recalled Dancers', 'Dancer`s Score', 'judge 1 Score', 'judge 2 Score', 'judge 3 Score', 'judge 4 Score', 'judge 5 Score', 'notes'));  

$sql = "SELECT `dancer_name`, `competition_level1`, `feis_entered`, `date`, `dance_name1`, `competition_number1`, `number_competitors1`, `dancer_placement1`, `was_recalled`, `recall1`, `dancer_score1`, `judge1_score`, `judge2_score`, `judge3_score`, `judge4_score`, `judge5_score`, `notes`  FROM `mark_cards1` WHERE user_id = '$id' ORDER BY YEAR(date) ASC, dancer_name, feis_entered";
$res = mysqli_query($con,$sql);

while($row = mysqli_fetch_assoc($res))
{
    fputcsv($output, $row;  
}

  fclose($output);  
?> 
因此,我想要的是,成绩在名为“成绩”的选项卡中,冠军在名为“冠军”的选项卡中,专业在名为“专业”的选项卡中。

CSV(Comma-SeparatedVvalues)文件不包含Excel中所示的“选项卡”:

这是CSV文件的外观:

id,name,active
1,jack,0
2,peter,1
3,luke,1
这是一个文本文件,其中的各个项目用逗号(
)分隔,新条目用新行分隔

没有花哨的标签。解决方案可能是,您可以为每个项目创建单独的文件,然后将其单独保存到专用文件(grades.csv、champion.csv等)中


或者,正如有人建议的那样,使用专用库来管理office文件,这将是两个最好的解决方案。

因为您要创建简单的CSV文件,所以无法创建选项卡。CSV文件不是“真正的”Excel文件,不能包含单独的工作表/选项卡等功能。您可能会发现,提供了一种方法来完成您正试图做的事情。