如何将数据从 MySQL 导出到 Excel(.xlsx) 但在导出前处理数据

How to export data from MySQL to Excel(.xlsx) but handling the data before exporting

我正在尝试将数据从 MySQL 导出到 xlsx,但在我的数据库中可能有一些 0 和 1 而不是真实数据。 让我更好地解释一下:有一列用于设置白天还是晚上,但使用 0 表示白天,1 表示晚上。当我使用下面的代码导出时,我得到了一个包含这些 0 和 1 的 xlsx。

已经尝试过 https://phppot.com/php/database-data-export-to-excel-file-using-php/ and https://artisansweb.net/how-to-export-mysql-database-data-to-excel-using-php/ 之类的方法,但我无法在发送前编辑要发送到 xlsx 的内容

 $filename = "Export_excel.xls";
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=\"$filename\"");
    $isPrintHeader = false;
    if (! empty($productResult)) {
        foreach ($productResult as $row) {
            if (! $isPrintHeader) {
                echo implode("\t", array_keys($row)) . "\n";
                $isPrintHeader = true;
            }
            echo implode("\t", array_values($row)) . "\n";
        }
    }

当代码看到零时,我想将其设置为 "day"

如果您只想显示特定字段。

select id,name, ( CASE WHEN table_column = 0 THEN 'day' WHEN table_column = 1 THEN 'night' END ) as table_column 来自 your_table

输出看起来像:

身份证名table_column

1 个卢卡斯日

首先,您的脚本会创建一个以 Excel 作为 mime 类型的制表符分隔的纯文本。 这不是真正的 Excel 文件,可能会给您带来意想不到的结果。

如果您想创建一个真正的 Excel 文件,请使用类似 PHPSpreadsheet 的东西。

尽管如此,您可以像 Saji 在他的评论中推荐的那样更改您的 SQL 查询,或者您可以在 foreach 语句中执行类似的操作:

if($row['header_name'] == 0){
    $row['header_name'] = 'day';
}else{
    $row['header_name'] = 'night';
}

请注意,您必须使用数组中的键而不是 'header_name',后者也用作脚本中的列名。