I'm trying to override the Export button of the Admin Orders Grid, to add another custom CSV export with fixed columns
The goal for the custom option is to always export the same columns, without changing the default behavior of CSV and Excel XML filtered columns. Something to do with the dataProvider I guess
Code:
../view/adminhtml/ui_component/sales_order_grid.xml
<?xml version="1.0" encoding="UTF-8"?>
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<listingToolbar name="listing_top">
<exportButton class="Magento\Ui\Component\ExportButton" name="export_button">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="selectProvider" xsi:type="string">sales_order_grid.sales_order_grid.sales_order_columns.ids</item>
<item name="options" xsi:type="array">
<item name="cvs_test" xsi:type="array">
<item name="value" xsi:type="string">csv_custom</item>
<item name="label" xsi:type="string" translate="true">CSV_CUSTOM</item>
<item name="url" xsi:type="string">mui/export/gridToCsv</item>
</item>
</item>
</item>
</argument>
</exportButton>
</listingToolbar>
</listing>
Best Answer
After some searching, solved by following this solution and adapted to the CSV format: Magento2: Export grid data in xls format. Not sure if it is the right way but it just works.
For reference, this is code that I modified to have fixed exported columns:
Namespace\Module\Model\Export\MetadataProviderCustomCsv.php
Pros: flexible export, it is also possible to easily join other entities, like the order product
Cons: it requires at least one column selected in the filter but I'm sure there is a way to create a column without cloning it