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

时间:2015-07-02 01:09:28

标签: php excel csv yii export

我目前有一个回复,它会在拍卖中发回一个项目列表。我想要做的是在将数据导出到excel电子表格之前清理数组。我可以使用yii或php在导出之前清理选择,我只需要知道如何做到这一点。我知道如何使用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!!!

要总结这些更改,我需要删除前两列,并重命名'说明'列到' INFO'

1 个答案:

答案 0 :(得分:0)

应该来自Human Readable headers

guard let filePath = NSBundle.mainBundle().pathForResource("fractal", ofType: "gif"),
  let gifData = NSData(contentsOfFile: filePath) else {
    return
}

var webViewBG = UIWebView(frame: self.view.frame)
webViewBG.loadData(gifData, MIMEType: "image/gif", textEncodingName: "utf-8",
  baseURL: NSURL(string: "http://localhost/")!)

并且只导出您想要的列我将只选择那些列。看起来ECSVExport类可以使用CArrayDataprovider作为输入。因此,只选择要导出的列并用它填充CArrayDataprovider并导出到您的类。

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