CSV Exportable

How to export datastores to CSV files

customerNameproductNameproductLineorderDateorderMonthorderYearorderQuarterdollar_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");
customerNameproductNameproductLineorderDateorderDayorderMonthorderYearorderQuarterdollar_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

Download KoolReport Get KoolReport Pro