为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Yii 1.1 框架通过 PHP 下载过滤后的 CSV 文件

如何使用 Yii 1.1 框架通过 PHP 下载过滤后的 CSV 文件

PHP
智慧大石 2022-07-22 18:32:25
在您进一步阅读之前,如果我在这里复制,我想道歉。我已经环顾了很长一段时间,对于如何处理以下情况没有任何运气。由于我是一个新手程序员,整个事情变得更糟了。情况我从工作中的高级程序员那里得到了一项任务,即创建一个可以生成 CSV 文件的函数。我遇到了一些麻烦,但最终解决了。该函数(位于模型中)如下所示。// The function below will return a CSV file.  public function convert2CSV(){    $data = $this->search()->rawData;    $fileOpener = fopen('php://output', 'w');    fputcsv($fileOpener, array(       'some code...'    ), ';');    foreach ($data as $rows) {      fputcsv($fileOpener, $rows ';');    }    fclose($fileOpener);}到目前为止,一切都很好。现在我的任务是创建一个过滤器,该过滤器也将应用于 CSV 文件。我这是什么意思?好吧,我在网站上使用过滤器,然后导出 CSV 文件,它应该只下载过滤器的结果。到目前为止,无论我做什么,它都只是下载了它所能下载的所有内容,直到达到最大数量。我试图通过使用 $_GET 以某种方式告诉上面的 CSV 函数只下载过滤后的结果来完成它。我一直在尝试在控制器中这样做,在调用模型的 CSV 函数的操作中。 public function actionExport2CSV() {    $a = new A();    $b = new B();  // This part will output the headers so that the file is downloaded rather than displayed        header('Content-type: text/csv');        header('Content-Disposition: attachment; filename=TestFile.csv');  // do not cache the file        header('Pragma: no-cache');        header('Expires: 0');        $a->convert2CSV(); {            if (isset($_GET['B'])) {                $b->attributes = $_GET['B'];            }    }  }}我很感激你能给我的任何帮助和/或解释。我当然更愿意了解我做错了什么,以便在未来学习更多并成为更好的程序员。非常感谢你们的帮助。
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

我用的是EExcelview扩展,非常好用。


下载并解压代码/protected/extensions/

将其添加到您的/protected/config/main.php文件中,如下所示

  'import' => array(

      'app.models.*',

      'app.portlets.*',

      'app.components.*',

      'app.extensions.*',

      ...

      'ext.phpexcel.*', # here we are importing the extension

    ),

在要下载 CSV 文件的视图中添加和优化代码,如下所示:

 $this->widget('EExcelView', array(

      'dataProvider' => $model->search(),

      'creator'      => Yii::app()->name,

      'grid_mode'    => 'grid',

      'title'        => 'CSV File title',

      'subject'      => 'CSV File Subject',

      'description'  => 'CSV File Description',

      'exportText'   => 'Download file ',

      'filename'     => urlencode('My file to download'),

      'exportType'   => 'CSV', # Available Options => Excel5, Excel2007, PDF, HTML, CSV

      'template'     => "{exportbuttons}",

      'columns'      => array(

          'colA',

          'colB'

          ...

      ),

  ));


查看完整回答
反对 回复 2022-07-22
?
温温酱

TA贡献1752条经验 获得超4个赞

不用管大家。

我编辑了搜索功能,以便在创建 CSV 文件之前对其进行过滤。


查看完整回答
反对 回复 2022-07-22
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信