【问题标题】:Output mysql query result to formated excel table with php使用php将mysql查询结果输出到格式化的excel表
【发布时间】:2020-10-21 21:21:17
【问题描述】:

我必须将 mysql 查询的结果提取到“用户友好”的 excel(.xls 或 .xlsx)表中。 我不想为 php 使用导入或包。

这是我目前得到的:

<?php

function query_to_csv($database, $query, $filename, $attachment = false, $headers = true) {

if ($attachment) {
    // send response headers to the browser
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment;filename=' . $filename);
    $fp = fopen('php://output', 'w');
} else {
    $fp = fopen($filename, 'w');
}

$result = mysqli_query($database, $query) or die(mysqli_error($database));
foreach ($result as $fields) {
    fputcsv($fp, $fields);
    
}
    
    fclose($fp);
} 

这是 Result

如何将数组分散在不同的单元格中?

【问题讨论】:

  • 该数据看起来可能没问题。可能只是您将其导入 Excel 的方式是错误的。尝试在文本编辑器中查看数据,以便查看原始 CSV 数据。我希望它看起来不错。
  • @ADyson 我同意,我认为他使用不同的分隔符在 excel 中打开 csv 文件。尝试选择comma作为分隔符。
  • 当然,这段代码不会生成真正的 XLS 或 XLSX 文件,它只会是 CSV 文本文件。如果您想创建一个真正的 Excel 文件,那么您将需要使用一个库(当然,除非您想自己实现 openXML 标准,但这将是相当多的工作)。你反对使用某种库或包,究竟是什么?我认为周围有一些免费的可以做你想做的工作。
  • @ADyson 我知道数据没问题。我只是想知道如何将逗号分隔值 (CSV) 提取到 Excel 表中。每个值应该有一个不同的单元格。
  • @ADyson 是的......你知道最大的威胁就在屏幕后面。 :) 无论如何,我现在使用 PHP Excel 得到它并设置了分隔符。你帮了很多忙,感谢 ADyson!

标签: php mysql excel csv export-to-csv


【解决方案1】:

遗憾的是,我不得不使用名为 PHP Excel(旧)或 PhpSpreadsheet(新)的库。

$objReader->setDelimiter(',');

这是设置分隔符的PHP Excel函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多