首页 > 解决方案 > 我想将记录从 SQL 导入 Excel

问题描述

是的,有很多标题,但我选择在这个标题下解释问题,因为我在其他标题中找不到解决方案:)

该数据库包含调查问题和该调查的答案记录。我想在第一列打印这些记录的问题标题,并在列下打印答案。

例如,

问题表 id question_id 问题

答案表id question_id 答案

我尝试了很多方法,但未能在问题标题下的每一行中显示答案。

Excel,
    A       -        B       -         C .. etc.
1 - question_title   question_title    question_title .. etc.

2 - answer_title     answer_title      answer_title   .. etc.
3 - answer_title     answer_title      answer_title   .. etc.
4 - answer_title     answer_title      answer_title   .. etc.

我做了什么 :)

$objPHPExcel    =   new PHPExcel();
$quest          =   $db->query("SELECT * FROM question WHERE question_id =1");
$answer         =   $db->query("SELECT * FROM answer WHERE question_id =1");
$objPHPExcel->setActiveSheetIndex(0);

$column = 'A';
foreach($quest as $rows){
    $objPHPExcel->getActiveSheet()->SetCellValue($column.'1', $rows['question'],'UTF-8');
    $column++;
}

$rowCount   =   2;
$columns = 'A';
foreach($answer as $row){
    $objPHPExcel->getActiveSheet()->SetCellValue($columns.'2', $row['answer'],'UTF-8');
    $rowCount++;
    $columns++;
}

我需要在问题结果下方列出答案:

在此处输入图像描述

标签: phpmysqlexcel

解决方案


从这里通过 PHP 导出到 CSV

我个人使用此函数从任何数组创建 CSV 内容。

function array2csv(array &$array)
{
   if (count($array) == 0) {
     return null;
   }
   ob_start();
   $df = fopen("php://output", 'w');
   fputcsv($df, array_keys(reset($array)));
   foreach ($array as $row) {
      fputcsv($df, $row);
   }
   fclose($df);
   return ob_get_clean();
}

然后,您可以让您的用户使用以下方式下载该文件:

function download_send_headers($filename) {
    // disable caching
    $now = gmdate("D, d M Y H:i:s");
    header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
    header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
    header("Last-Modified: {$now} GMT");

    // force download  
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");

    // disposition / encoding on response body
    header("Content-Disposition: attachment;filename={$filename}");
    header("Content-Transfer-Encoding: binary");
}
Usa

举例:

download_send_headers("data_export_" . date("Y-m-d") . ".csv");
echo array2csv($array);
die();

推荐阅读