CakePHP 2 CSV 导出插件

CSV 导出插件将 Model find('all') 的结果(包括嵌套的 belongsTo 关联),扁平化成一个数组,并将其导出为 CSV。

将一个扁平化的键值数组导出为 CSV 非常简单。

导出 Model find('all') 的结果,当有多个嵌套的 belongsTo 关联,并且并非所有关联都存在于每条记录时,就会变得更复杂。

此插件会扁平化此类数组并将其导出为 CSV。

源代码和文档可在 GitHub 获取:https://github.com/joshuapaling/CakePHP-Export-CSV-Plugin

示例用法

var $components = array('Export.Export');

public function export_data() {
    $data = $this->MyModel->find('all');
    $this->Export->exportCsv($data);
}

选项

exportCsv() 函数有 5 个参数

  1. $data - 要导出的数据数组。此数组的格式应与 $this->MyModel->find('all') 的返回值相同。
  2. $fileName (可选) - 要下载的文件名。如果为空,则使用日期戳文件名,例如 export_2013-09-24.csv。
  3. $maxExecutionSeconds (可选) - 如果设置,则会更改 PHP 的 max_execution_time。在处理大量数据时非常有用。
  4. $delimiter (可选) - CSV 的分隔符。默认为逗号 (,)。
  5. $enclosure (可选) - CSV 的包围符。默认为双引号 (“)。

示例输入/输出

假设 City belongsTo State,而 State belongsTo country。您可能从 City 模型中获取类似以下数据的记录:

array(
    0 => array(
        'City' => array(
            'name' => 'Sydney',
            'population' => '4.6m'
        ),
        'State' => array(
            'name' => 'NSW',
            'Country' => array(
                'name' => 'Australia',
            )
        )
    ),
    1 => array(
        'City' => array(
            'name' => 'Melbourne',
            'population' => '4.1m'
        ),
        'State' => array(
            'name' => 'VIC',
            'Country' => array(
                'name' => 'Australia',
            )
        )
    ),
)

导出组件将输出类似于以下内容的 CSV:

<table cellpadding=”7” > <tr> <th>City.name</th> <th>City.population</th> <th>State.name</th> <th>State.Country.name</th> </tr> <tr> <td>悉尼</td> <td>460 万</td> <td>新南威尔士州</td> <td>澳大利亚</td> </tr> <tr> <td>墨尔本</td> <td>410 万</td> <td>维多利亚州</td> <td>澳大利亚</td> </tr></table>