1. API reference
  2. Welcome
    1. Component overview
    2. Quick start
    3. System requirements
    4. Troubleshooting
    5. Managing license keys
  3. Connecting to Data Source
    1. JSON
      1. Connecting to JSON
      2. Data types in JSON
    2. CSV
      1. Connecting to CSV
      2. Connecting to CSV using the Data Compressor
      3. Data types in CSV
    3. Database
      1. Connecting to SQL databases
      2. Connecting to other databases
      3. Connecting to a database with Node.js
      4. Connecting to a database with .NET
      5. Connecting to a database with .NET Core
      6. Connecting to a database with Java
      7. Connecting to a database with PHP
    4. Microsoft Analysis Services
      1. Connecting to Microsoft Analysis Services
      2. Getting started with the Accelerator
      3. Installing the Accelerator as a Windows Service
      4. Referring the Accelerator as a DLL
      5. Configuring the authentication process
      6. Configuring a secure HTTPS connection
      7. Troubleshooting
    5. Pentaho Mondrian
      1. Connecting to Pentaho Mondrian
      2. Getting started with Accelerator
      3. Configuring Mondrian roles
      4. Сonfiguring username/password protection
      5. Сonfiguring secure HTTPS connection
      6. Troubleshooting
    6. icCube
  4. Security
    1. Accelerator security
    2. Data Compressor Security
  5. Configuring report
    1. What is a report
    2. Data source
    3. Slice
    4. Options
    5. Number formatting
    6. Conditional formatting
    7. Set report to the component
    8. Get report from the component
    9. Date and time formatting
    10. Configuring global options
    11. Export and print
    12. Calculated values
    13. Custom sorting
  6. Integration with frameworks
    1. Available tutorials
    2. Integration with AngularJS (v1.x)
    3. Integration with Angular
    4. Integration with React
    5. Integration with Webpack
    6. Integration with ASP.NET
    7. Integration with jQuery
    8. Integration with JSP
    9. Integration with TypeScript
    10. Integration with RequireJS
    11. Integration with PhoneGap
  7. Integration with charts
    1. Integration with Highcharts
    2. Integration with Google Charts
    3. Integration with FusionCharts
    4. Integration with any charting library
  8. Customizing
    1. Customizing toolbar
    2. Customizing appearance
    3. Customizing context menu
    4. Localizing component
  9. Updating to the latest version
    1. Updating to the latest version
    2. Release notes
    3. Migration guide from 2.5 to 2.6
    4. Migration guide from 2.4 to 2.5
    5. Migration guide from 2.3 to 2.4
    6. Migration guide from 2.2 to 2.3
    7. Documentation for older versions
Table of contents

Connecting to CSV using the Data Compressor

In the previous article we described how to connect your web pivot table to a CSV data source. To gain even better performance while working with CSV datasets you can use Flexmonster Data Compressor – a server-side compression tool developed by our team. The Data Compressor helps you to increase data loading speeds from server to a customer’s browser.

The Data Compressor is available for .NET, .NET Core, Node.js, Java, and PHP. The following steps will help you with the process of connecting to CSV using the Data Compressor.

Step 1: Embed the component into your web page

Set up an empty component in your HTML page. If Flexmonster is not yet embedded – return to Quick start. Your code should look similar to the following example:

<div id="pivotContainer">The component will appear here</div>
<script src="flexmonster/flexmonster.js"></script>
<script>
	var pivot = new Flexmonster({
		container: "pivotContainer",
		toolbar: true,
		licenseKey: "XXXX-XXXX-XXXX-XXXX-XXXX"
	});
</script>

Step 2: Setup the Data Compressor on the server

Follow the instructions for the technology you use.
Setup the Data Compressor .NET

Firstly add Flexmonster.Compressor.dll to your project. It is located in the Pivot Table for CSV/compressor/.net/ folder of the download package. Note that you need to have Microsoft .NET Framework 4 or higher.

The following line of code will convert your CSV file to a compressed Stream:

Stream inputStream = Flexmonster.Compressor.Compressor.CompressFile("data.csv");

Ensure that you have specified the correct path to your CSV file. Now you can create a response from the Stream. The following sample shows how to create a streaming response. This will result in the end user receiving the response almost without delay and in the server using less memory:

HttpResponseMessage response = Request.CreateResponse();
response.Content =
    new PushStreamContent((Stream outputStream, HttpContent content, 
                           TransportContext context) =>
    {
        int length = 0;
        byte[] buffer = new byte[10240];
        while ((count = inputStream.Read(buffer, 0, buffer.Length)) > 0)
        {
            outputStream.Write(buffer, 0, length);
            outputStream.Flush();
        }
        outputStream.Close();
    }, new MediaTypeHeaderValue("text/plain")
);

The full project is available at the Pivot Table for CSV/compressor/.net/ folder inside the download package.

Setup the Data Compressor .NET Core

To install Flexmonster Data Compressor please download it on nuget.org or run the following command in the Package Manager Console:

Install-Package Flexmonster.Compressor

Note that you need to have Microsoft .NET Core.

Then add the line of code that will convert your CSV file to a compressed Stream:

Stream inputStream = Flexmonster.Compressor.Compressor.CompressFile("data.csv");

Ensure that you have specified the correct path to your CSV file. Now you can create a response from the Stream. For simple cases it is enough to read all content:

StreamReader reader = new StreamReader(inputStream);
string output = reader.ReadToEnd();
Setup the Data Compressor Node.js

To install Flexmonster Data Compressor run this command using NPM:

npm install flexmonster-compressor

Note that you need to have Node.js version 8.x.

Then add these lines that will convert your CSV file to a compressed stream:

const compressor = require('flexmonster-compressor');
let stream = compressor.compressCsvFile('data.csv');

Ensure that you have specified the correct path to your CSV file. Now you can create a response from the stream:

stream.on('data', data => {
	res.write(data);
});
stream.on('end', () => {
	res.end();
});

The full project is available at the Pivot Table for CSV/compressor/nodejs/ folder inside the download package.

Setup the Data Compressor Java

Firstly add flexmonster-compressor.jar to your project. It is located in the Pivot Table for CSV/compressor/java/ folder of the download package. Note that you need to have Java 7 or higher.

The following line of code will convert your CSV file to a compressed InputStream:

InputStream inputStream = Compressor.compressFile("data.csv");

Ensure that you have specified the correct path to your CSV file. Now you can create a response from the InputStream. The following sample shows how to create a streaming response. This will result in the end user receiving the response almost without delay and in the server using less memory:

response.setContentType("text/plain");
OutputStream outputStream = response.getOutputStream();
int length = 0;
byte[] buffer = new byte[10240];
while ((length = inputStream.read(buffer)) > 0) {
    outputStream.write(buffer, 0, length);
    outputStream.flush();
}

The full project is available at the Pivot Table for CSV/compressor/java/ folder inside the download package.

Setup the Data Compressor PHP

Firstly add flexmonster-compressor.php to your project. It is located in the Pivot Table for CSV/compressor/php/ folder of the download package:

require_once("flexmonster-compressor.php");

Note that you need to have PHP 5.3+ (earlier versions may work, but have not been tested).

The following line of code will start streaming your compressed CSV file:

Compressor::compressFile("data.csv");

Ensure that you have specified the correct path to your CSV file. The full project is available at the Pivot Table for CSV/compressor/php/ folder inside the download package.

Step 3: Enable cross-origin resource sharing (CORS)

By default, the browser prevents JavaScript from making requests across domain boundaries. CORS allows web applications to make cross-domain requests. Here are some useful links explaining how to setup CORS on different types of servers:

Also, for PHP projects you can add the following headers at the beginning of the PHP file:

    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods', 'OPTIONS,GET,PUT,POST,DELETE');
    header('Access-Control-Allow-Headers', 'Content-Type');

      Step 4: Configure report with your own data

      Now it’s time to configure Flexmonster Pivot on the web page. Let’s create a minimal report for this (replace filename and other parameters with your specific values):

      var pivot = new Flexmonster({
      	container: "pivotContainer",
      	toolbar: true,
      	report: {
      		dataSource: {
      			dataSourceType: "ocsv",
      			/* URL to the Data Compressor .NET */
      			filename: "http://localhost:55772/api/flexmonster/get"
      
      			/* URL to the Data Compressor Java */
      			//filename: "http://localhost:8400/FlexmonsterCompressor/get"
      
      			/* URL to the Data Compressor PHP */
      			//filename: "http://localhost/demo-compress-mysql.php"
      		}
      	},
      	licenseKey: "XXXX-XXXX-XXXX-XXXX-XXXX"
      });
      

      Launch the web page from browser — there you go! A pivot table is embedded into your project.