yii 更改删除和重命名列名
yii changing removing and renameing column names
我目前有一个 return 可以发回拍卖中的物品清单。我想要做的是在将数组导出到 excel 传播 sheet 之前清理数组。我可以在导出前使用 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
我需要做的是在导出之前自动清理 cvs,所以它看起来像这样:
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!!!
为了总结更改,我需要删除前 2 列,并将 'description' 列重命名为 'INFO'
中的类似内容
$headers = array('header_to_change'=>'new value');
$csv->setHeaders($headers);
// or
$csv->setHeader($currentHeaderValue, $newHeaderValue);
要仅导出您想要的列,我会 select 仅导出那些列。看起来 ECSVExport class 可以使用 CArrayDataprovider 作为输入。因此,只有 select 您要导出的列并用它填充 CArrayDataprovider 并用您的 class.
导出
但您也可以使用 "setCallback" 函数或 "setExclude" 函数删除不需要的列条目。
对于这两个函数,上面给出的 link 中都有一个示例。
我目前有一个 return 可以发回拍卖中的物品清单。我想要做的是在将数组导出到 excel 传播 sheet 之前清理数组。我可以在导出前使用 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
我需要做的是在导出之前自动清理 cvs,所以它看起来像这样:
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!!!
为了总结更改,我需要删除前 2 列,并将 'description' 列重命名为 'INFO'
$headers = array('header_to_change'=>'new value');
$csv->setHeaders($headers);
// or
$csv->setHeader($currentHeaderValue, $newHeaderValue);
要仅导出您想要的列,我会 select 仅导出那些列。看起来 ECSVExport class 可以使用 CArrayDataprovider 作为输入。因此,只有 select 您要导出的列并用它填充 CArrayDataprovider 并用您的 class.
导出但您也可以使用 "setCallback" 函数或 "setExclude" 函数删除不需要的列条目。 对于这两个函数,上面给出的 link 中都有一个示例。