gpt4 book ai didi

mysql - 如何在CakePHP中将mysql表数据转换为Excel或CSV格式?

转载 作者:行者123 更新时间:2023-11-29 01:34:18 24 4
gpt4 key购买 nike

我想在单击按钮时将我的 sql 数据转换为 csv 文件。我找到的用于将 sql 转换为 CSV 的代码片段是用 PHP 编写的,并且我正在尝试将其转换为 CakePHP,因为我在 CakePHP 中工作。

这是我要转换的 PHP 代码:

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field']."; ";
$i++;
}
}
$csv_output .= "\n";

$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j]."; ";
}
$csv_output .= "\n";
}

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;

解决方案

Controller 中的函数:

function exporttocsv()
{
$this->set('headers',$this->Result->find('all',array('fields'=>'Result.label')));
$this->set('values',$this->Result->find('all',array('fields'=>'Result.value')));
}

导出tocsv.ctp文件:

<?php

foreach($headers as $header):

$csv_output .=$header['Result']['label'].", ";

endforeach;
$csv_output .="\n";

if(!empty($values)){
foreach($values as $value):

$csv_output .=$value['Result']['value'].", ";

endforeach;
$csv_output .="\n";
}
else{
echo "There is no data to export.";
}

$filename = "export_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");

print $csv_output;

exit;
?>

最佳答案

首先,在 Cake 中,您不会在同一个文件中进行查询和输出。您像往常一样在 Controller 中查询数据,$this->set() 将结果传递给 View ,并在 View 中执行如下操作:

foreach ($results as $result) {
echo join(', ', $result['COLUMNS']);
echo "\n";
}

输出是这样的:

value, varchar(25), NO, , ,
submitter, int(11), NO, , ,
...

由于 Cake 会自动围绕您的 View 进行布局,因此您必须 set the layout到不同的东西,比如 'ajax'(这只是一个空布局)。

关于mysql - 如何在CakePHP中将mysql表数据转换为Excel或CSV格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1320620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com