Skip to main content

Node.js/Angular: SheetJS js-xlsx library with issues and fixes.

In this article, we will see how SheetJS js-xlsx library
is used to export  data to xlsx file for a particular use case and
also, I am covering a few issues that I found and fixes for that.

So let's start without wasting time,


Use Case: We need to export a html table (containing all columns and rows) into xlsx file.

Angular Example Link: https://stackblitz.com/edit/angular-xbgicw?file=app%2Fapp.component.ts

I have used the reference of this example in this article.
So please check the Angular Example Link.

Here, I have 2 tables with 3 columns Name, Dob in dd/mm/yyyy format, and
Id which is a string but sometimes its value maybe number 20 digit.

So let's see the happy case:

In this example I have imported xlsx library and has 2 functions importTable1() and importTable2()
which use xlsx util functions to export the tables into xlsx files.

Issues Found:
(Export Table One  button will export xlsx sheet for table1 which has these issues)

1) When you export the sheet for table one using xlsx library the
 Dob column format changes into mm/dd/yyyy if the date value is less or equal to 12.
For example :
Dob for Rubecca in table one is 11/10/1998 and if you export
table one you will see it changed to 10/11/1998.

2) In Id column for table 1 for Zena is a 20 digit number.
  But when you export sheet for table 1 the Id value is round off.
For example Id value '10001000202020101010' is changed to '10001000202020100000'

Fixes:
In the reference example, I have given fixes for these 2 issues.
If you look at table 2, I have used "t='s'" inside <td> tag.
Which considers the respective column as string and does not manipulate value.
So when you click the Export Table Two button it will export xlsx sheet for table2 without any manipulations done to Id and Dob coloumn.

Npm package Link: https://www.npmjs.com/package/xlsx

You Might Like:

Node.js interview questions set 1

Node JS: Understanding bin in package.json.

Node.js: Bundling your Node.js application to a single executable for Windows.

Node.js: Extract text from image using Tesseract.


Comments

Popular posts from this blog

Coding Interview Questions Set 1

From this article, I will be sharing with you all a series of articles on coding interview questions. So please stay connected for the latest set of questions. It will be a good brainstorming exercise and will also prepare you for coding interviews and will definitely boost your confidence. So let's start, 1)Reverse of a string with only O(1) extra memory. Solution: var reverse = function(string) {     let result = ''     for(let i= string.length -1; i >= 0; i--){         result += string[i];     }     return result; }; 2)Fizz Buzz: Write a program that will accept a number n and will output number till n but for multiples of three it should output “Fizz” instead of the number and for the multiples of five output “Buzz”. For numbers which are multiples of both three and five output “FizzBuzz”. Solution: var fizzBuzz= function(n) {     const arr=[]     for(i=1; i<=n; i++){ ...

JavaScript: Debouncing | Flipkart UI Interview Question.

To understand this programming practice will go with a quick example. We all do online shopping and we do search for products on Flipkart on the search bar. So when we type on search bar i.e on every keypress we are actually giving API requests to the server, which in response gives us suggestions. Actually, it's a time-consuming task and may degrade the performance of the webpage. So to improve the performance we use debounce function which actually acts as a controller which reduces the API request to the server on keypress event. In simple terms, we are giving API request only after a certain amount of time between two keypress events. A debounce is a higher-order function. Higher-order function: A function that returns another function. Let's dive deep: HTML Code: <input type="text" onkeyup="searchProducts()"/> Consider this as a search bar for Flipkart. On any keypress, we are calling searchProducts() function. Javascri...

Node.js: Bundling your Node.js application to single executable for Windows.

In this article, we will see how to bundle Node.js application to a single executable for Windows. What's the need? Well recently, I had taken a work where I needed to convert pdf's(Of similar format) to excel sheet. So I was reading the pdf's from a folder in desktop and I was storing the output excel sheet into a separate folder on the desktop. I used Node.js for the program. Now the client wanted it to install the program on 25 windows machine and his budget was really low. So it was also not possible for me to install node.js for 25 machines and then install the required dependency for each one. One of the solution: While I was searching for an easy solution I found this amazing npm module pkg . This module can make your node.js app work like plug and play type. No need to install Node.js on the client machine or any other dependency.  It helps to make a commercial or trial version of your node.js application without exposing the source code. I found ...