Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii更改删除和重命名列名_Php_Excel_Csv_Yii_Export - Fatal编程技术网

Php yii更改删除和重命名列名

Php yii更改删除和重命名列名,php,excel,csv,yii,export,Php,Excel,Csv,Yii,Export,我目前有一份退货单,它会发回拍卖中的物品清单。我要做的是在将数组导出到excel电子表格之前清理它。我可以使用yii或php在导出之前清理select,我只需要知道如何做。我知道如何使用mysql语句,但这在yii世界是不受欢迎的 这是我当前的代码: $auction = Btmauctions::model()->findByPk($id); $listings = $auction->btmListings; $filename = 'last_lot_export.csv';

我目前有一份退货单,它会发回拍卖中的物品清单。我要做的是在将数组导出到excel电子表格之前清理它。我可以使用yii或php在导出之前清理select,我只需要知道如何做。我知道如何使用mysql语句,但这在yii世界是不受欢迎的

这是我当前的代码:

$auction = Btmauctions::model()->findByPk($id);
$listings = $auction->btmListings;
$filename = 'last_lot_export.csv';
$csv = new ECSVExport($listings);
$csv->toCSV($filename); // returns string by default
Yii::app()->getRequest()->sendFile( $auction->name.'_lots.csv' , file_get_contents( $filename ) ); 
这将导出如下所示的csv:

ID| auction_ID| lot| description | manufacturer | model|more_info|  condition
21  10  12  FANUC CIRCUIT BOARD Fanuc   A20B-9000-0180/09C      3
20  10  1   FANUC CIRCUIT BOARD Fanuc   A20B-0008-0242/023A     4
22  10  18  FANUC CIRCUT BOARD  Fanuc   A20B-1003-0010/12B  * A LITTLE DIRTY    3
23  10  19  FANUC CIRCUIT BOARD Fanuc   A20B-1003-0020/03A  *VERY DIRTY!!! *PLASTIC BROKEN ON RISERS!! COSMETIC ONLY!!  3
lot|INFO              | manufacturer| model|  more info |         condition
12  FANUC CIRCUIT BOARD  Fanuc   A20B-9000-0180/09C                     3
1   FANUC CIRCUIT BOARD  Fanuc   A20B-0008-0242/023A                    4
18  FANUC CIRCUT BOARD   Fanuc   A20B-1003-0010/12B * A LITTLE DIRTY    3
19  FANUC CIRCUIT BOARD  Fanuc   A20B-1003-0020/03A *VERY DIRTY!!!
我需要做的是在导出之前自动清理CV,使其看起来像这样:

ID| auction_ID| lot| description | manufacturer | model|more_info|  condition
21  10  12  FANUC CIRCUIT BOARD Fanuc   A20B-9000-0180/09C      3
20  10  1   FANUC CIRCUIT BOARD Fanuc   A20B-0008-0242/023A     4
22  10  18  FANUC CIRCUT BOARD  Fanuc   A20B-1003-0010/12B  * A LITTLE DIRTY    3
23  10  19  FANUC CIRCUIT BOARD Fanuc   A20B-1003-0020/03A  *VERY DIRTY!!! *PLASTIC BROKEN ON RISERS!! COSMETIC ONLY!!  3
lot|INFO              | manufacturer| model|  more info |         condition
12  FANUC CIRCUIT BOARD  Fanuc   A20B-9000-0180/09C                     3
1   FANUC CIRCUIT BOARD  Fanuc   A20B-0008-0242/023A                    4
18  FANUC CIRCUT BOARD   Fanuc   A20B-1003-0010/12B * A LITTLE DIRTY    3
19  FANUC CIRCUIT BOARD  Fanuc   A20B-1003-0020/03A *VERY DIRTY!!!

为了总结这些更改,我需要删除前两列,并将“description”列重命名为“INFO”

应该类似于

要仅导出所需的列,我将仅选择这些列。看起来ECSVExport类可以使用CArrayDataprovider作为输入。因此,只选择要导出的列,并用它填充CArrayDataprovider,然后用类导出

但您也可以使用“setCallback”函数删除不需要的列条目或“setExclude”函数。 对于这两个函数,上面给出的链接中都有一个示例