This repository contains a library that facilitates the creation and reading of Excel files in .xlsx and .csv formats.
The main class, Excel
, provides an interface for creating custom Excel files and reading existing files for further
analysis. The library takes care of creating spreadsheets, managing column headers, and applying validations to the
data, which eases the generation and processing of Excel files.
To use this package in your project, follow these steps:
-
Clone this repository to your local system.
-
Install the dependencies by running the following command in the
/library
directory:npm install @bggroup/excel
The Excel
class is the heart of this library. It provides properties and methods for the creation and reading of Excel
files. Below are descriptions of its properties and methods:
import { Excel } from '@bggroup/excel/excel';
This use case describes how to create an Excel file in XLSX format.
// Example code to create an Excel file in XLSX format
const excel = new Excel();
const params = {
pathname: 'output/',
filename: 'example.xlsx',
type: 'xlsx',
sheetData: [
{
sheetName: 'Sheet1',
data: [
{ name: 'Alice', age: 28 },
{ name: 'Bob', age: 32 },
],
columnsHeader: [
{ header: 'Name', key: 'name' },
{ header: 'Age', key: 'age' },
],
},
],
};
excel.create(params).then(result => {
if (result.status) {
console.log(`XLSX file created successfully at: ${result.data.pathFile}`);
return;
}
console.error(`Error creating the XLSX file: ${result.error}`);
});
The response of this use case includes details about the status and location of the created file, as well as error details in case of failure.
This use case describes how to read an Excel file in XLSX format. Column or cell validation by range is optional with
the validations
property, in this case, it's described with column validation.
// Example code to read an Excel file in XLSX format
const excel = new Excel();
const readParams = {
filePath: 'input/example.xlsx',
type: 'xlsx',
};
excel.read(readParams).then(result => {
if (result.status) {
console.log('Data read successfully:');
console.log(result.data);
return;
}
console.error(`Error reading the XLSX file: ${result.error}`);
});
The response of this use case includes the data read from the spreadsheet and error details in case of failure.
This use case describes how to read an Excel file in XLSX format applying specific cell validations by range.
// Example code to read an Excel file in XLSX format
const excel = new Excel();
const readParams = {
filePath: 'input/example.xlsx',
type: 'xlsx',
validations: {
cells: [
{
sheet: 'Sheet1',
items: [
{
startRow: 2,
endRow: 2,
startCol: 1,
endCol: 1,
type: 'string',
regex: '^[A-Za-z ]+$',
},
{
startRow: 2,
endRow: 2,
startCol: 3,
endCol: 3,
type: 'number',
},
],
},
],
},
};
excel.read(readParams).then(result => {
if (result.status) {
console.log('Data read successfully
:');
console.log(result.data);
return;
}
console.error(`Error reading the XLSX file: ${result.error}`);
});
The response of this use case includes the data read from the spreadsheet and error details in case of failure.
This use case describes how to read an Excel file in XLSX format by a specific sheet.
// Example code to read an Excel file in XLSX format
const excel = new Excel();
const readParams = {
filePath: 'input/example.xlsx',
type: 'xlsx',
sheet: 'Sheet1',
};
excel.read(readParams).then(result => {
if (result.status) {
console.log('Data read successfully:');
console.log(result.data);
return;
}
console.error(`Error reading the XLSX file: ${result.error}`);
});
The response of this use case includes the data read from the spreadsheet and error details in case of failure.
This use case describes how to create an Excel file in CSV format. Currently, CSV files cannot be created with more than one sheet.
// Example code to create an Excel file in CSV format
const excel = new Excel();
const params = {
pathname: 'output/',
filename: 'example.csv',
type: 'csv',
sheetData: [
{
sheetName: 'Sheet1',
data: [
{ name: 'Alice', age: 28 },
{ name: 'Bob', age: 32 },
],
columnsHeader: [
{ header: 'Name', key: 'name' },
{ header: 'Age', key: 'age' },
],
},
],
};
excel.create(params).then(result => {
if (result.status) {
console.log(`CSV file created successfully at: ${result.data.pathFile}`);
return;
}
console.error(`Error creating the CSV file: ${result.error}`);
});
The response of this use case is similar to that of Use Case 1.
This use case describes how to read an Excel file in CSV format, column validation is not currently available in this case.
// Example code to read an Excel file in CSV format
const excel = new Excel();
const readParams = {
filePath: 'input/example.csv',
type: 'csv',
};
excel.read(readParams).then(result => {
if (result.status) {
console.log('Data read successfully:');
console.log(result.data);
return;
}
console.error(`Error reading the CSV file: ${result.error}`);
});
The response of this use case is similar to that of Use Case 2.
This use case shows how to handle invalid parameters when creating or reading Excel files.
// Example code to handle invalid parameters
const excel = new Excel();
// Example 1: Invalid creation parameters
const invalidCreateParams = { pathname: null, filename: null, sheetData: null };
excel.create(invalidCreateParams).then(result => {
if (result.status) {
console.log('File created successfully.');
return;
}
console.error(`Error creating the file: ${result.error}`);
});
// Example 2: Invalid reading parameters
const invalidReadParams = { filePath: null, type: null };
excel.read(invalidReadParams).then(result => {
if (result.status) {
console.log('Data read successfully.');
return;
}
console.error(`Error reading the file: ${result.error}`);
});
The response of this use case varies depending on the nature of the invalid parameters.
Property | Description |
---|---|
columnsHeader | An array of objects that defines the headers for the columns in the spreadsheets. These headers are used when creating an Excel file. |
workbook | An object from the exceljs library that represents the Excel workbook and is used to load existing Excel files. |
Method | Description |
---|---|
create | This method is used to create a custom Excel file. It takes a params parameter object specifying the location, file name, sheet data, and more. Returns a promise resolving in an object with information about the status and file location, if successful. |
read | This method is used to read an existing Excel file, either in .xlsx or .csv format. It takes a params parameter object specifying the file location and validations to apply. |
When the create
method is called, the response has the following structure:
Property | Description |
---|---|
status | Indicates whether the operation was successful (true) or failed (false). |
data | An object containing information about the created Excel file, including the path, file name, and location. |
error | Details of the error, in case the operation fails. Can be a text string or an array of errors. |
When the read
method is called, the response has the following structure:
Property | Description |
---|---|
status | Indicates whether the operation was successful (true) or failed (false). |
data | An object that contains the data read from the spreadsheet, organized by sheet. |
error | Details of the error, in case the operation fails. Can be a text string or an array of errors. |
These response structures allow you to verify the status of the operation and access data or error details as appropriate.
The create
method accepts a params
object that is used to customize the creation of an Excel file. The properties of
params
are detailed below:
Property | Description |
---|---|
pathname | The location or path where the Excel file will be saved. Must be a text string. |
options | Additional options for creating the Excel file. It's an object used for specific file configurations. |
filename | The name of the Excel file to be created. Must be a text string. |
sheetData | An array of objects defining the data of the worksheets to be included in the Excel file. Each object in this array represents a worksheet. |
type | The type of Excel file to be created, which can be "csv" or "xlsx". Must be a text string. |
Property | Description |
---|---|
sheetName | The name of the worksheet. Must be a text string. |
data | An array of objects representing the data to be included in the worksheet. Each object contains information about the rows and columns. |
columnsHeader | An array of objects that define the headers of the columns in the worksheet. These headers are used when creating an Excel file. |
The read
method is used to read an existing Excel file and apply validations as necessary. The properties of params
are detailed below:
Property | Description |
---|---|
filePath | The location of the Excel file to be read. Must be a text string. |
validations | An object containing validations for cells, including data type validations and regex patterns. |
type | The type of Excel file to be read, which can be "csv" or "xlsx". Must be a text string. |
The validations
object is used to specify the validations that will be applied to the cells of the Excel file. The
properties of validations
are divided into separate tables below:
Property | Description |
---|---|
sheetName | The name of the worksheet to which the validations will be applied. Must be a text string. |
key | The key of the column to which the validations will be applied. Must be a text string. |
type | The expected data type in the column (optional). Can be "string", "number", "boolean", or "date". |
regex | A regular expression pattern to validate the values of the column (optional). Must be a regular expression. |
Property | Description |
---|---|
sheetName | The name of the worksheet to which the validations will be applied. Must be a text string. |
startRow | The start row number for the validation. Must be a number. |
endRow | The end row number for the validation. Must be a number. |
startCol | The start column number for the validation. Must be a number. |
endCol | The end column number for the validation. Must be a number. |
type | The expected data type in the range of cells (optional). Can be "string", "number", "boolean", or "date". |
regex |
A regular expression pattern to validate the values in the range of cells (optional). Must be a regular expression. |
These properties allow you to specify the validations to apply to the cells of the Excel file during reading.
Contributions, issues, and feature requests are welcome. Feel free to check the issues page or open new ones.
This project is under the MIT license. See the LICENSE file for more information.