1

我正在使用 Cakephp 2.0。我需要生成一份 Excel 格式的日常基础报告。所以我写了一个函数来生成一个CSV文件。当我在 OpenOffice 中下载文件时,它在 Linux 机器上工作正常,但如果我尝试在 Windows Microsoft 中打开相同的文件,则没有单元格,但数据显示正确。有了这个,我列出了我的编码

    $model.= "-".date('d M,Y');
    header ("Expires: Mon, ".date('d M,Y')." GMT");
    header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
    header ("Cache-Control: no-cache, must-revalidate");
    header ("Pragma: no-cache");
    header ("Content-type: application/vnd.ms-excel");
    header ("Content-Disposition: attachment; filename=\"$model.xls" );
    header ("Content-Description: Generated Report" );

任何人都可以帮助thanx

4

2 回答 2

3

我认为您可能在这里做错了什么请检查您的标题。您在问题中提到了 csv 并且您正在编写 excel 标头。这可能令人困惑MS Excel

header ("Content-type: application/vnd.ms-excel");
header ("Content-Disposition: attachment; filename=\"$model.xls" );
header ("Content-Description: Generated Report" );

我正在使用这种标题格式,它在 Windows 和 Open Office 中都非常适合我。请尝试一下。

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: octet/stream");
header("Content-Type: application/force-download");
header("Content-Type: application/download");
header("Content-disposition: attachment; filename=" . basename($filename.".csv"));
header("refresh: 0; url= ".$redirect_url);
于 2012-08-27T11:44:31.913 回答
1

Excel CSV 文件应命名为 SSV 文件,因为数据列需要用分号而不是逗号分隔。此外,数据应括在引号中,任何内引号都需要转义为双引号;例如1;"Some ""string"" with escapes"

于 2012-08-27T11:12:37.853 回答