Skip to content

LucasIrvine/csv-builder-downloader

Repository files navigation

csv-builder-downloader

Coverage statements Coverage functions Coverage lines

A dependancy free JavaScript tool for composing and downloading csv files. Written in TypeScript.


Simple Usage

This is will sanitize the values and download a file: csv-download-<timestamp>.csv

const yourData = [[...headers][...row1][...row2]];

new CsvBuilder().addRows(yourData).download();

Advanced Usage

Pass in configuration and make usage match your data model more closely.

const {
    defaultFileHeading,
    yesterdayFileHeaders,
    yesterdayData,
    todayFileHeaders,
    todayData,
    getFileName,
} from yourReducerOrDataModel;

// Initialize with custom parameters (all optional)
const csvBuilder = new CsvBuilder({
    filename: getFileName(), // Generate a filemane
    includeTimeStamp: false, // By default adds a timestamp to the end
    sanitizeRegex: /[^a-zA-Z0-9:\./_\-@$ ]/g, // Regex override
    nonValueIndices: [0,5] // These values wont be sanitized
});

// Add a row or multiple rows
csvBuilder
    .addRow(`${defaultFileHeading} Yesterday:`)
    .addRow(yesterdayFileHeaders)
    .addRows(yesterdayData)
    .addNewLine(2);

// Add cell at a time
yesterdayData.forEach((metric) => csvBuilder.addCell(someCalculation(metric)));

// Use a helper function for a typical table
csvBuilder.addSection({
    title: `${defaultFileHeading} Today:`,
    headers: todayFileHeaders,
    rows: todayData
});

// Change the sanitize RegEx mid file creation
csvBuilder.changeRegEx(/[^a-zA-Z:\./_\-@$ ]/g);

// Add cell at a time
todayData.forEach((metric) => csvBuilder.addCell(someCalculation(metric)));

// Finally download
csvBuilder.download();

CsvBuilder

Configuration

Option Default Type
encodingType data:text/csv;charset=utf-8 String
file '' String
fileSuffix .csv String
filename csv-download String
includeTimeStamp true Boolean
nonValueIndices [] Array
sanitizeRegex /[^a-zA-Z0-9:\./_\-@$ ]/g RegExp
sanitizeValues true Boolean

Methods

.addCell(val: CELL_TYPE, sanitize: boolean = true)
.addRow(val: CELL_TYPE | ROW_ARRAY_TYPE, sanitize?: boolean)
.addRows(rows: ROW_ARRAY_TYPE[])
.addNewLine(count: number = 1)
.addSection({ title, headers, rows, newLines }: SECTION_TYPE)
.getEncodedFile()
.getFilename()
.changeRegex(passedRegex: RegExp)
.download()

CsvDownloader

If using the CsvBuilder, you do not need to separately use the CsvDownloader, but it can be used on its own if needed.

Configuration (all required if using separately)

Option Type
encodedFile String
filename String

Methods

.getBlob()
.getBlobUrl(csvData: Blob)
.download()

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages