我想知道是否可以在导出CSV文件之前编辑列?
例如,我的产品表中包含title
description
created_at
updated_at
我想要的是导出title
body
之类的内容您在此处看到我删除了created_at
,updated_at
并将description
列重命名为body
是否可能?
我正在使用this package版本2.1.0 Info Graph
目前我使用样本中的默认导出代码,包括没有其他查询等。尝试计算如何更改代码以便按我的意愿导出数据。
public function export() {
$products = Product::all();
Excel::create('products', function($excel) use($products) {
$excel->sheet('sheet 1', function($sheet) use($products){
$sheet->fromArray($products);
});
})->export('xls');
PS:我尝试创建的正是this extension在Magento中的作用,
正如您在此扩展程序中看到的那样,我们可以在导出数据之前change default database column names
,add/remove columns
等(但我只需要这两个选项)。
我设法让我的表列名称如下:
Product model
public function getTableColumns() {
return $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable());
}
和我的controller
就像:
public function export(Request $request) {
$product = new Product;
$list = $product->getTableColumns();
dd($list);
//$products = Product::select($list)->get();
// Excel::create('products', function($excel) use($products) {
// $excel->sheet('sheet 1', function($sheet) use($products){
// $sheet->fromArray($products);
// });
// })->export('xls');
}
my list dd
array:27 [▼
0 => "id"
1 => "title"
2 => "slug"
3 => "imageOne"
4 => "imageTwo"
5 => "short_description"
6 => "description"
7 => "price"
8 => "meta_description"
9 => "meta_tags"
10 => "arrivalDays"
11 => "height"
12 => "weight"
13 => "lenght"
14 => "width"
15 => "sku"
16 => "stock"
17 => "label"
18 => "label_from"
19 => "label_to"
20 => "label_color"
21 => "status_id"
22 => "brand_id"
23 => "category_id"
24 => "subcategory_id"
25 => "created_at"
26 => "updated_at"
]
before export my file
?我需要为每列添加复选框以说明此列包含导出 文件与否。
example
我将取消选中created_at
列,以便它不会 包含我导出的CSV文件。
好的,我可以使用我的自定义名称。有一个很小的问题:
我的数据行将在excel文件中重复两次。
Explain
我修改了数据库的5
列,得到了10
这是我更新的代码:
public function export(Request $request) {
$products = Product::all();
Excel::create('products', function($excel) use($products, $request) {
$excel->sheet('sheet 1', function($sheet) use($products, $request){
$ddd = $request->except('_token');
foreach($ddd as $fff){
$ddd[] = $fff;
}
$sheet->fromArray($products, null, 'A1', false, false);
$sheet->row(1, $ddd);
});
})->export('csv');
return redirect()->back();
}
任何想法?
答案 0 :(得分:1)
在创建Excel工作表之前,您不能转换数据吗?例如:
$products = Product::select(
'subject as title',
'body as description'
)->get();
编辑:
根据您提供的更新,它是这样的:
public function export(Request $request)
{
$list = [];
foreach($request->columns as $column){
$list[] = $column->DatabaseHeadingName . ' as ' . $column->CustomHeadingName;
}
$products = Product::select($list)->get();
Excel::create('products', function($excel) use($products) {
$excel->sheet('sheet 1', function($sheet) use($products){
$sheet->fromArray($products);
});
})->export('xls');
}