2016-02-26 89 views
2

kinldy讓我知道添加CSV導出按鈕,並在magento2定製網格創建CSV。我創建了一個網格和表單。需要在magento2中添加csv導出功能。Magento2定製網格導出CSV

回答

0

添加CSV文件導出按鈕,網格塊佈局(XML):

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> 
    <body> 
     <referenceBlock name="your.grid.container"> 
      <block class="Yourpackage\Yourmodule\Block\Adminhtml\Sample\Grid" name="sample.grid" as="grid"> 
       <!-- Arguments or blocks --> 

       <!-- Export Widget --> 
       <block class="Magento\Backend\Block\Widget\Grid\Export" name="sample.grid.export" as="grid.export"> 
        <arguments> 
         <argument name="exportTypes" xsi:type="array"> 
          <item name="csv" xsi:type="array"> 
           <item name="urlPath" xsi:type="string">*/*/exportCsv</item> 
           <item name="label" xsi:type="string" translate="true">CSV</item> 
          </item> 
         </argument> 
        </arguments> 
       </block> 

       <!-- Columns block --> 
      </block> 
     </referenceBlock> 
    </body> 
</page> 

創建你的控制器:

<?php 
namespace Yourpackage\Yourmodule\Controller\Adminhtml\Sample; 

use Magento\Framework\App\ResponseInterface; 
use Magento\Framework\App\Filesystem\DirectoryList; 

class ExportCsv extends \Yourpackage\Yourmodule\Controller\Adminhtml\Sample 
{ 
    /** 
    * Export data grid to CSV format 
    * 
    * @return ResponseInterface 
    */ 
    public function execute() 
    { 
     $this->_view->loadLayout(); 
     $fileName = 'sample_data.csv'; 
     $content = $this->_view->getLayout()->getChildBlock('sample.grid', 'grid.export'); 

     return $this->_fileFactory->create(
      $fileName, 
      $content->getCsvFile($fileName), 
      DirectoryList::VAR_DIR 
     ); 
    } 
} 
+0

,我已經嘗試這樣做,越來越空了的print_r($內容)。不能讓佈局blocks.any建議 – user3040610

+0

致命錯誤:調用上噓聲成員函數getCsvFile()瘦 – Naveenbos

2

創建控制器

<?php 
namespace Yourpackage\Yourmodule\Controller\Adminhtml\Sample; 

class ExportCsv extends \Magento\Backend\App\Action 
{ 
    protected $_fileFactory; 
    protected $_response; 
    protected $_view; 
    protected $directory; 
    protected $converter; 
    protected $resultPageFactory ; 
    protected $directory_list; 
    public function __construct(\Magento\Backend\App\Action\Context $context, 
     \Magento\Framework\View\Result\PageFactory $resultPageFactory 
     ) { 
     $this->resultPageFactory = $resultPageFactory; 
     parent::__construct($context); 
} 
public function execute() 
{ 
    $fileName = 'yourfilename.csv'; 
    $resultPage = $this->resultPageFactory ->create(); 
    $content = $resultPage->getLayout()->getBlock('yourblockname')->getCsv();; 
    $this->_sendUploadResponse($fileName, $content); 

} 

protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream') { 

    $this->_response->setHttpResponseCode(200) 
     ->setHeader('Pragma', 'public', true) 
     ->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true) 
     ->setHeader('Content-type', $contentType, true) 
     ->setHeader('Content-Length', strlen($content), true) 
     ->setHeader('Content-Disposition', 'attachment; filename="' . $fileName . '"', true) 
     ->setHeader('Last-Modified', date('r'), true) 
     ->setBody($content) 
     ->sendResponse(); 
    die; 

} 
} 

創建佈局的xml yourmodule_yourcontroller_exportcsv

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> 
    <update handle="yourmodule_yourcontroller_grid"/> 
</page> 
+0

雖然我們開這樣的這樣的csv文件,它是要求「過濾器選擇」爲什麼這麼問它好嗎? –

+0

因爲對於第一次打開該文件時,它要求你列分開在此基礎上像逗號(,)或半柱(;)等。 –

0

要magento2使用UI組件做外銷電網

按照UI行列表組件XML

<exportButton name="export_button"> 
    <argument name="data" xsi:type="array"> 
    <item name="config" xsi:type="array"> 
     <item name="selectProvider" xsi:type="string">vendor_listing.vendor_listing.example_blog_columns.ids</item> 
     </item> 
     </argument> 
    </exportButton> 

這將在magento2生成網格加載的集合CSV

在容器標籤的附加