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