CSV Exportable
How to export datastores to CSV files
customerName | productName | productLine | orderDate | orderMonth | orderYear | orderQuarter | dollar_sales |
---|---|---|---|---|---|---|---|
Vitachrome Inc. | 1937 Lincoln Berline | Vintage Cars | 2003-01-10 00:00:00 | 1 | 2003 | 1 | 3,726 |
Vitachrome Inc. | 1936 Mercedes-Benz 500K Special Roadster | Vintage Cars | 2003-01-10 00:00:00 | 1 | 2003 | 1 | 1,768 |
Baane Mini Imports | 1952 Alpine Renault 1300 | Classic Cars | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 5,572 |
Baane Mini Imports | 1962 LanciaA Delta 16V | Classic Cars | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 5,026 |
Baane Mini Imports | 1958 Setra Bus | Trucks and Buses | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 3,284 |
Baane Mini Imports | 1940 Ford Pickup Truck | Trucks and Buses | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 3,308 |
Baane Mini Imports | 1926 Ford Fire Engine | Trucks and Buses | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 1,283 |
Baane Mini Imports | 1913 Ford Model T Speedster | Vintage Cars | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 2,489 |
Baane Mini Imports | 1934 Ford V8 Coupe | Vintage Cars | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 2,164 |
Baane Mini Imports | 18th Century Vintage Horse Carriage | Vintage Cars | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 2,173 |
Baane Mini Imports | 1917 Maxwell Touring Car | Vintage Cars | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 3,970 |
Baane Mini Imports | 1940s Ford truck | Trucks and Buses | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 3,531 |
Baane Mini Imports | 1939 Cadillac Limousine | Vintage Cars | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 1,671 |
Baane Mini Imports | 1962 Volkswagen Microbus | Trucks and Buses | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 3,864 |
Baane Mini Imports | 1936 Chrysler Airflow | Vintage Cars | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 2,216 |
Baane Mini Imports | 1980’s GM Manhattan Express | Trucks and Buses | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 2,866 |
Baane Mini Imports | 1996 Peterbilt 379 Stake Bed with Outrigger | Trucks and Buses | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 2,851 |
Baane Mini Imports | 1982 Camaro Z28 | Classic Cars | 2003-01-29 00:00:00 | 1 | 2003 | 1 | 3,951 |
Euro+ Shopping Channel | 1969 Corvair Monza | Classic Cars | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 4,469 |
Euro+ Shopping Channel | 1957 Chevy Pickup | Trucks and Buses | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 4,567 |
Euro+ Shopping Channel | 1998 Chrysler Plymouth Prowler | Classic Cars | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 3,262 |
Euro+ Shopping Channel | 1964 Mercedes Tour Bus | Trucks and Buses | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 3,559 |
Euro+ Shopping Channel | 1992 Ferrari 360 Spider red | Classic Cars | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 3,817 |
Euro+ Shopping Channel | 1970 Triumph Spitfire | Classic Cars | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 4,530 |
Euro+ Shopping Channel | 1970 Dodge Coronet | Classic Cars | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 1,821 |
Euro+ Shopping Channel | 1958 Chevy Corvette Limited Edition | Classic Cars | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 1,338 |
Euro+ Shopping Channel | 1992 Porsche Cayenne Turbo Silver | Classic Cars | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 2,768 |
Euro+ Shopping Channel | 1954 Greyhound Scenicruiser | Trucks and Buses | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 1,818 |
Euro+ Shopping Channel | 1950's Chicago Surface Lines Streetcar | Trains | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 2,771 |
Euro+ Shopping Channel | Diamond T620 Semi-Skirted Tanker | Trucks and Buses | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 3,781 |
Euro+ Shopping Channel | 1962 City of Detroit Streetcar | Trains | 2003-01-31 00:00:00 | 1 | 2003 | 1 | 1,706 |
Danish Wholesale Imports | 1972 Alfa Romeo GTA | Classic Cars | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 6,392 |
Danish Wholesale Imports | 2001 Ferrari Enzo | Classic Cars | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 8,435 |
Danish Wholesale Imports | 1969 Ford Falcon | Classic Cars | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 4,115 |
Danish Wholesale Imports | 1903 Ford Model A | Vintage Cars | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 3,005 |
Danish Wholesale Imports | Collectable Wooden Train | Trains | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 3,334 |
Danish Wholesale Imports | 1904 Buick Runabout | Vintage Cars | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 3,095 |
Danish Wholesale Imports | 18th century schooner | Ships | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 5,073 |
Danish Wholesale Imports | 1912 Ford Model T Delivery Wagon | Vintage Cars | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 3,232 |
Danish Wholesale Imports | 1940 Ford Delivery Sedan | Vintage Cars | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 3,774 |
Danish Wholesale Imports | The Schooner Bluenose | Ships | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 2,214 |
Danish Wholesale Imports | The Mayflower | Ships | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 2,512 |
Danish Wholesale Imports | The USS Constitution Ship | Ships | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 1,882 |
Danish Wholesale Imports | The Titanic | Ships | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 3,594 |
Danish Wholesale Imports | The Queen Mary | Ships | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 2,185 |
Danish Wholesale Imports | Pont Yacht | Ships | 2003-02-11 00:00:00 | 2 | 2003 | 1 | 1,119 |
Rovelli Gifts | 1980s Black Hawk Helicopter | Planes | 2003-02-17 00:00:00 | 2 | 2003 | 1 | 4,825 |
Rovelli Gifts | P-51-D Mustang | Planes | 2003-02-17 00:00:00 | 2 | 2003 | 1 | 2,757 |
Rovelli Gifts | 1999 Yamaha Speed Boat | Ships | 2003-02-17 00:00:00 | 2 | 2003 | 1 | 3,315 |
Rovelli Gifts | 1941 Chevrolet Special Deluxe Cabriolet | Vintage Cars | 2003-02-17 00:00:00 | 2 | 2003 | 1 | 3,863 |
This example demonstrates how to export datastores to CSV files.
$report->exportToCSV(
array(
"dataStores" => array(
"ordersExport" => array(...),
)
)
)
->toBrowser("orders.csv");
There are many more options with CSV exporting:
$report->exportToCSV(
array(
"dataStores" => array(
"ordersExport" => [
"separator" => ",", // default separator = "," i.e. comma
"enclosure" => "\"", // default general enclosure = "" i.e. empty string
"enclosure" => ["(", ")"], // all enclosure property could be a 2 element array
"typeEnclosures" => [
"string" => "\"", // default string enclosure is general enclosure
"date" => "\"", // default date enclosure is general enclosure
"datetime" => "\"", // default datetime enclosure is general enclosure
"number" => "", // default number enclosure = "" i.e. empty string
"boolean" => "", // default boolean enclosure = "" i.e. empty string
],
'nullEnclosure' => "", // default = "" i.e empty string
'nullString' => "NULL", // default = false i.e empty string for null value
'useColumnFormat' => 1, // default = 1, set = 0 to increase export speed
'useEnclosureEscape' => 1, // default = 1, set = 0 to increase export speed
'useTypeEnclosure' => 1, // default = 1, set = 0 to increase export speed
"escape" => "\\", // if escape is empty/undefined, double enclosures will be used
"eol" => "\n", // define End of line character, default eol is "\n"
"columns" => array(
"customerName",
"productName",
"productLine",
"orderDate",
"orderMonth",
"orderYear",
"orderQuarter",
"dollar_sales" => [
"type" => "number",
"enclosure" => ["<", ">"], // to apply custom column enclosure "useCustomColumnEnclosure" must be true
"headerEnclosure" => "\"",
"nullEnclosure" => "",
"nullString" => "nULL",
"enclosureEscape" => "\"",
]
),
'useCustomColumnEnclosure' => 0, // default = 0
'useCustomColumnNullString' => 0, // default = 0
'useCustomColumnEnclosureEscape' => 0, // default = 0
],
),
// General options for all datastores
"useLocalTempFolder" => true,
"autoDeleteTempFile" => true,
"BOM" => true, // default bom = false
"buffer" => 1000, // unit: KB ~ 1000 bytes. Default buffer = 1000 KB
),
)
<?php
require_once "MyReport.php";
$report = new MyReport;
$report->run()->render();
<?php
require_once "../../../load.koolreport.php";
use \koolreport\processes\Map;
use \koolreport\processes\Limit;
use \koolreport\processes\ColumnMeta;
use \koolreport\cube\processes\Cube;
use \koolreport\pivot\processes\Pivot;
class MyReport extends koolreport\KoolReport
{
use \koolreport\excel\CSVExportable;
function settings()
{
return array(
"dataSources" => array(
"dollarsales" => array(
'filePath' => '../../../databases/customer_product_dollarsales2.csv',
'fieldSeparator' => ';',
'class' => "\koolreport\datasources\CSVDataSource"
),
)
);
}
function setup()
{
$node = $this->src('dollarsales')
->pipe(new ColumnMeta(array(
"dollar_sales" => [
"type" => "number"
],
"orderDate" => [
"type" => "datetime"
]
)));
$node->pipe(new Limit(array(
50, 0
)))
->pipe($this->dataStore('orders'));
if (isset($this->params['export'])) {
$multiply = isset($_GET["multiply"]) ? $_GET['multiply'] : 1;
for ($i = 0; $i < $multiply; $i++) {
$node->pipe($this->dataStore('ordersExport'));
}
}
}
}
<?php
use \koolreport\pivot\widgets\PivotTable;
use \koolreport\widgets\koolphp\Table;
?>
<div class="report-content">
<div style='text-align: center;margin-bottom:30px;'>
<h1>CSV Exportable</h1>
<p class="lead">How to export datastores to CSV files</p>
<form method="post">
<button type="submit" class="btn btn-primary" formaction="export.php">Export to CSV</button>
<button type="submit" class="btn btn-primary" formaction="export.php?multiply=10">Large CSV (30 thousand rows)</button>
<button type="submit" class="btn btn-primary" formaction="export.php?multiply=100">Huge CSV (300 thousand rows)</button>
</form>
</div>
<div class='box-container'>
<div>
<?php
Table::create(array(
"dataSource" => $this->dataStore('orders'),
"columns"=>array(
"customerName",
"productName",
"productLine",
"orderDate",
"orderMonth",
"orderYear",
"orderQuarter",
"dollar_sales"
),
"paging"=>array(
"pageSize"=>5
)
));
?>
</div>
</div>
</div>
<?php
include "MyReport.php";
$report = new MyReport([
"export" => true,
]);
$report->run();
$report->exportToCSV(
array(
"dataStores" => array(
"ordersExport" => [
"separator" => ",", // default separator = "," i.e. comma
"enclosure" => "\"", // default general enclosure = "" i.e. empty string
"enclosure" => ["(", ")"], // all enclosure property could be a 2 element array
"typeEnclosures" => [
"string" => "\"", // default string enclosure is general enclosure
"date" => "\"", // default date enclosure is general enclosure
"datetime" => "\"", // default datetime enclosure is general enclosure
"number" => "", // default number enclosure = "" i.e. empty string
"boolean" => "", // default boolean enclosure = "" i.e. empty string
],
'nullEnclosure' => "", // default = "" i.e empty string
'nullString' => "NULL", // default = false i.e empty string for null value
'useColumnFormat' => 1, // default = 1, set = 0 to increase export speed
'useEnclosureEscape' => 1, // default = 1, set = 0 to increase export speed
'useTypeEnclosure' => 1, // default = 1, set = 0 to increase export speed
"escape" => "\\", // if escape is empty/undefined, double enclosures will be used
"eol" => "\n", // define End of line character, default eol is "\n"
"columns" => array(
"customerName",
"productName",
"productLine",
"orderDate",
"orderMonth",
"orderYear",
"orderQuarter",
"dollar_sales" => [
"type" => "number",
"enclosure" => ["<", ">"], // to apply custom column enclosure "useCustomColumnEnclosure" must be true
"headerEnclosure" => "\"",
"nullEnclosure" => "",
"nullString" => "nULL",
"enclosureEscape" => "\"",
]
),
'useCustomColumnEnclosure' => 0, // default = 0
'useCustomColumnNullString' => 0, // default = 0
'useCustomColumnEnclosureEscape' => 0, // default = 0
],
),
// General options for all datastores
"useLocalTempFolder" => true,
"autoDeleteTempFile" => true,
"BOM" => true, // default bom = false
"buffer" => 1000, // unit: KB ~ 1000 bytes. Default buffer = 1000 KB
// "buffer" => PHP_INT_MAX,
),
)
->toBrowser("orders.csv");
customerName | productName | productLine | orderDate | orderDay | orderMonth | orderYear | orderQuarter | dollar_sales |
---|---|---|---|---|---|---|---|---|
Vitachrome Inc. | 1937 Lincoln Berline | Vintage Cars | 2003-01-10 00:00:00 | 10 | 1 | 2003 | 1 | 3726.45 |
Vitachrome Inc. | 1936 Mercedes-Benz 500K Special Roadster | Vintage Cars | 2003-01-10 00:00:00 | 10 | 1 | 2003 | 1 | 1768.33 |
Baane Mini Imports | 1952 Alpine Renault 1300 | Classic Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 5571.8 |
Baane Mini Imports | 1962 LanciaA Delta 16V | Classic Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 5026.14 |
Baane Mini Imports | 1958 Setra Bus | Trucks and Buses | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 3284.28 |
Baane Mini Imports | 1940 Ford Pickup Truck | Trucks and Buses | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 3307.5 |
Baane Mini Imports | 1926 Ford Fire Engine | Trucks and Buses | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 1283.48 |
Baane Mini Imports | 1913 Ford Model T Speedster | Vintage Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 2489.13 |
Baane Mini Imports | 1934 Ford V8 Coupe | Vintage Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 2164.4 |
Baane Mini Imports | 18th Century Vintage Horse Carriage | Vintage Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 2173 |
What People Are Saying
"KoolReport helps me very much in creating data report for my corporate! Keep up your good work!"
--
Alain Melsens
"The first use of your product. I was impressed by its easiness and powerfulness. This product is a great and amazing."
--
Dr. Lew Choy Onn
"Fantastic framework for reporting!"
--
Greg Schneider