Download the PHP package firebrandhq/silverstripe-excel-export without Composer
On this page you can find all versions of the php package firebrandhq/silverstripe-excel-export. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download firebrandhq/silverstripe-excel-export
More information about firebrandhq/silverstripe-excel-export
Files in firebrandhq/silverstripe-excel-export
Package silverstripe-excel-export
Short Description Silverstripe module offering DataFormatters to export DataObjects in Excel format.
License MIT
Informations about the package silverstripe-excel-export
Silverstripe Excel Export module
This Silverstripe module makes it easy to export a set of Silverstripe DataObjects to:
- Excel 2007 (XLSX)
- Excel 5 (XLS)
- CSV
This module is built by extending the standard SilverStripe DataFormatter.
Requirements
- silverstripe/cms >=3.1
- phpoffice/phpexcel >=1.8
Suggestions
Installation
Install the module through composer:
Exporting your DataObjects
There's 3 ways you can export your data to a spread sheet.
Programmatically by calling the DataFormatter directly
3 DataFormatters are provided:
- ExcelDataFormatter for XLSX
- OldExcelDataFormatter for XLS
- CsvDataFormatter for CSV
You can manually instantiate them to convert a list of DataObjects or a single DataObject.
convertDataObjectSet()
and convertDataObject()
will automatically set the Content-Type HTTP header to an appropriate Mime Type.
You can also retrieve the underlying PHPExcel object and export your DataObject set to whatever format supported by PHPExcel.
Add the GridFieldExcelExportButton to a GridField
The GridFieldExcelExportButton
allows your CMS users to easily export the data from a GridField to a spreadsheet.
The above code snippet will display a split button allowing the user to export the GridField list to the format of their choice.
Unlike the SilverStripe GridFieldExportButton, the GridFieldExcelExportButton
will export all the fields of the provided DataObjects ... not just the summary fields.
You can also use the GridFieldExcelExportAction
component. This button is added to each row and allows you to export individual records one at a time. Out of the box, GridFieldExcelExportAction
will export to xlsx, but you can get it to export to xls or csv (e.g.: new GridFieldExcelExportAction('csv')
).
GridFieldExcelExportAction
and GridFieldExcelExportButton
can be used in conjunction if you want to give both options to your users.
Call via the SilverStripe RestfulServer Module
The SilverStripe RestfulServer Module allows you to turn any SilverStripe website into a RESTFul Server.
If you use the SilverStripe RestfulServer Module in conjunction with the Silverstripe Excel Export module, you'll be able to dynamically export any DataObject set just by entering the right URL in your browser.
Access control
Obviously, you don't want everyone to be able to download any data off your website. The SilverStripe RestfulServer Module will only return results for DataObject with the $api_access
property set.
Additionally, access to individual DataObjects is controlled by the canView
function.
Configuration the SilverStripe RestfulServer Module
Getting to the data
Exporting your data is just as easy as entering a URL.
- Get a list of all Pages in Excel 2007: http://localhost/api/v1/Page.xlsx
- Get a list of all Pages in Excel 5: http://localhost/api/v1/Page.xls
- Get a list of all Pages in CSV: http://localhost/api/v1/Page.csv
- Limit the list to 10 results: http://localhost/api/v1/Page.csv?limit=10
- Return a single record: http://localhost/api/v1/Page/37.xlsx
- Drill down into relationships: http://localhost/api/v1/Tag/127/Articles.xlsx
SilverStripe RestfulServer Module Supported operations
Customising the output
There's 2 ways you can control the output:
- Choose which fields to output ;
- Choose to use field label instead of fields names in the headers.
Choose which fields to output
Because the ExcelDataFormatter
extends DataFormatter, you can use methods like setCustomFields()
, setCustomAddFields()
or setRemoveFields()
to control what fields will be present in the spread sheet.
Defining a default column set
You can customise the default column set that will be return for a specific DataObject class by defining a getExcelExportFields()
method on your DataOject class.
This getExcelExportFields()
method should return an array of fields following the same format used by DataObject::inheritedDatabaseFields()
:
You may also reference relationships in this array or dynamic properties:
This will also allow you to control the order the fields appear in the Spread Sheet. Note that ID will always be the first field and cannot be removed.
This behavior can be overriden for specific instances of ExcelDataFormatter
by calling the setCustomFields()
method.
Use field labels or field names as column headers
Out of the box, the actual field names will be used as column header. (e.g.: FirstName
rather than First Name
).
You can customise this behavior and use the Field Labels as define on your DataObject class instead. When generating the header row, ExcelDataFormatter
will call the fieldLabel()
method on your Data Object to decide what string to use in each header.
Change the default for all ExcelDataFormatter
In you YML config, you can use the following syntax to change the default headers.
Override the default for a specific instance
You may change the default behavior for a specific instance.