php - 我想将记录从 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++;
}
我需要在问题结果下方列出答案:
解决方案
我个人使用此函数从任何数组创建 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();
推荐阅读
- python - 从 CSV 中分离字符串并打印它们
- java-6 - 如何在 Java 6 中使用 DirectoryStream?
- kotlin - Kotlin 中类名后的方括号
- jhipster - 在 Linux 机器上运行 Jhipster 生成的战争时出错
- matlab - 失败的 MATLAB 许可证是 try/catch 异常吗?
- javascript - 访问控制器角度js中的状态参数对象
- android - [Android][Kotlin] 使用 AudioRecord 实现带通滤波器并写入 16BIT PCM 文件
- javascript - 每次更改组件的状态时,图表都会再次绘制
- google-cloud-platform - 我对 DataFusion 数据管道有疑问
- laravel - Amazon SES 不发送到所有电子邮件,仅批准