{"id":5589,"date":"2020-09-02T06:22:17","date_gmt":"2020-09-02T06:22:17","guid":{"rendered":"https:\/\/berg-software.com\/?p=5589"},"modified":"2022-09-16T13:47:49","modified_gmt":"2022-09-16T13:47:49","slug":"get-browser-data-into-excel-with-sheetjs","status":"publish","type":"post","link":"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/","title":{"rendered":"How to: Get browser data into Excel with SheetJS"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; fullwidth=&#8221;on&#8221; _builder_version=&#8221;4.4.1&#8243;][et_pb_fullwidth_post_title meta=&#8221;off&#8221; featured_placement=&#8221;background&#8221; _builder_version=&#8221;4.7.7&#8243; title_font=&#8221;||||||||&#8221; title_text_color=&#8221;#ff6317&#8243; title_font_size=&#8221;3.5em&#8221; meta_font=&#8221;|300|||||||&#8221; meta_text_color=&#8221;#ffffff&#8221; meta_font_size=&#8221;1em&#8221; background_enable_color=&#8221;off&#8221; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_start=&#8221;rgba(248,248,248,0.85)&#8221; background_color_gradient_end=&#8221;rgba(248,248,248,0.75)&#8221; background_color_gradient_overlays_image=&#8221;on&#8221; min_height=&#8221;20vh&#8221; height=&#8221;400px&#8221; custom_padding=&#8221;6vh||6vh||false|false&#8221; global_module=&#8221;403&#8243; locked=&#8221;off&#8221;][\/et_pb_fullwidth_post_title][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.4.1&#8243; custom_padding=&#8221;|||0px||&#8221; locked=&#8221;off&#8221;][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;intro&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.7.7&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;30px&#8221; header_3_font_size=&#8221;23px&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;16px&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; hover_enabled=&#8221;0&#8243; border_color_left=&#8221;#ff6317&#8243; sticky_enabled=&#8221;0&#8243;]In a <a href=\"https:\/\/berg-software.com\/insights\/automated-reporting-java-excel\/\" target=\"_blank\" rel=\"noopener noreferrer\">previous article<\/a>, we discussed a backend technique of reporting automation from large databases into Excel, using Java. Now let\u2019s look at a frontend technique that pulls Excel files from the grids\/tables within a web application using JavaScript. We will use SheetJS for this process.<\/p>\n<p>Nowadays, most of our information intake happens online. Especially when you need a convenient way to quickly access, view, filter, and analyze large amounts of data, there are few better tools than a web browser. Think of flight departure and landing times, stock exchange data, or visualizing various trends: their respective web applications are better than almost anything else.<\/p>\n<p>\u201cAlmost\u201d because there will be situations when convenience is not your most important KPI, and you will need to access the whole dataset locally:<\/p>\n<ul>\n<li>A dedicated software (e.g. Excel) with extensive functions will be of much better use than a filterable browser grid, especially when it comes to more intensive work (think pivots, macros, etc.).<\/li>\n<li>Sharing data (especially if already processed\/analyzed) is much easier when files are available.<\/li>\n<li>Going back and forth between you (\/your browser) and the server (\/backend) has the potential to slow things down.<\/li>\n<\/ul>\n<p>So, for each task, use its dedicated tool:<\/p>\n<ul>\n<li>For quick access and first overview: check the in-browser data.<\/li>\n<li>For sharing the data and in-depth work: pull the data into a local (Excel) file.<\/li>\n<\/ul>\n<p>Here\u2019s a very simplified breakdown of the process:[\/et_pb_text][et_pb_image src=&#8221;\/\/cdn.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel-diagram.jpg&#8221; alt=&#8221;Berg Software &#8211; JavaScript to Excel diagram&#8221; title_text=&#8221;Berg Software &#8211; JavaScript to Excel diagram&#8221; _builder_version=&#8221;4.4.6&#8243;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;2vh||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]In order to execute \u201cPart B\u201d, we work with SheetJS \u2013 so let\u2019s look at the details, shall we?[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.4.1&#8243; custom_padding=&#8221;|||0px||&#8221; locked=&#8221;off&#8221;][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;What is SheetJS&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.7.7&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h2>What is SheetJS, and what does it do?<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]SheetJS is the JavaScript library that allows parsing and writing of various spreadsheets formats, including Excel\u2019s xlsx. It\u2019s not the single library that does that, but it\u2019s by far the most popular \u2013 possibly because it comes in two variants: community (free) and commercial.<\/p>\n<p>The free variant offers most of the features you need, such as:<\/p>\n<ul>\n<li>Creating, parsing, populating, and editing a spreadsheet<\/li>\n<li>Converting a spreadsheet to CSV and HTML<\/li>\n<li>Exporting an HTML table as a spreadsheet<\/li>\n<li>Manipulating cells (merge, hide \/ unhide)<\/li>\n<li>Manipulate rows and columns<\/li>\n<li>Inserting comments<\/li>\n<\/ul>\n<p>The commercial one offers more advanced features, like:<\/p>\n<ul>\n<li>Supports VBA and Macros<\/li>\n<li>Adding pictures and charts<\/li>\n<li>Working with rich text, fonts, colors, and borders<\/li>\n<li>Formula and hyperlink support<\/li>\n<li>Pivot table and chart<\/li>\n<li>Converting styled Html to spreadsheets<\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Why SheetJS&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h2>Why SheetJS?<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<ul>\n<li>Fast<\/li>\n<li>Simple to use<\/li>\n<li>Offers comprehensive guidelines<\/li>\n<li>It&#8217;s popular and has an active support forum<\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;How does it work&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.7.7&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h2>How does SheetJS work?<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]SheetJS is focusing on data transformation. Instead of having to painfully read (or write-to) every cell of the spreadsheet, it supports you in mapping your spreadsheet into a JS object. For that, it provides an intermediate layer for manipulating the data.<\/p>\n<p>Once this mapping is done, the magic of actually transferring the data to (or from) the cumbersome underlying spreadsheet format happens behind the scenes.<\/p>\n<p>SheetJS provides some functions to work with the data, so basically everything you need for data manipulation.<\/p>\n<p>In this article, I\u2019m going to provide an overview of this library&#8217;s capabilities, focusing on how to generate an Excel file.[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Install&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h3>Install<\/h3>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]First things first, in order to use the library, we need to install it into our project. To install the library to your application, you need to run the next command line:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"text\" style=\"font-family: monospace;\">npm install xlsx \u2013save<\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]SheetJS has a utils tool class that helps us with:<\/p>\n<ul>\n<li>Adding data to data tables<\/li>\n<li>Converting different file types to workbooks<\/li>\n<li>Converting workbooks into different file types<\/li>\n<li>Workbook and cell operations, etc.<\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Create an Excel file&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h3>Create an Excel file<\/h3>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]In order to create an Excel file, first we need to create parts of the file. We know that an Excel file is made up of a workbook that has one or many worksheets.[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;2vh||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<strong>A.<\/strong> We can create a worksheet from 3 different types of formats (array-of-arrays, json, and DOM table):[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;1.5vh||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]Create from <strong>Array of arrays<\/strong> (aoa):[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">const<\/span> worksheet<span style=\"color: #339933;\">:<\/span> XLSX.<span style=\"color: #660066;\">WorkSheet<\/span> <span style=\"color: #339933;\">=<\/span> XLSX.<span style=\"color: #660066;\">utils<\/span>.<span style=\"color: #660066;\">json_to_sheet<\/span><span style=\"color: #009900;\">(<\/span>jsonData<span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]Create from <strong>JSON<\/strong>:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">const<\/span> worksheet<span style=\"color: #339933;\">:<\/span> XLSX.<span style=\"color: #660066;\">WorkSheet<\/span> <span style=\"color: #339933;\">=<\/span> XLSX.<span style=\"color: #660066;\">utils<\/span>.<span style=\"color: #660066;\">aoa_to_sheet<\/span><span style=\"color: #009900;\">(<\/span>aoaData<span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]Create from <strong>DOM table<\/strong>:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">const<\/span> worksheet<span style=\"color: #339933;\">:<\/span> XLSX.<span style=\"color: #660066;\">WorkSheet<\/span> <span style=\"color: #339933;\">=<\/span> XLSX.<span style=\"color: #660066;\">utils<\/span>.<span style=\"color: #660066;\">table_to_sheet<\/span><span style=\"color: #009900;\">(<\/span>document.<span style=\"color: #660066;\">getElementById<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #3366cc;\">'my-table'<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;2vh||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<strong>B.<\/strong>&nbsp;Once we have a sheet (or multiple sheets), we must add it\/them to a workbook.[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;1.5vh||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The next function creates a new workbook:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">const<\/span> workbook<span style=\"color: #339933;\">:<\/span> XLSX.<span style=\"color: #660066;\">WorkBook<\/span> <span style=\"color: #339933;\">=<\/span> XLSX.<span style=\"color: #660066;\">utils<\/span>.<span style=\"color: #660066;\">book_new<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The following functions adds \/ appends a new sheet to the workbook:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\">XLSX.<span style=\"color: #660066;\">utils<\/span>.<span style=\"color: #660066;\">book_append_sheet<\/span><span style=\"color: #009900;\">(<\/span>workbook<span style=\"color: #339933;\">,<\/span> worksheet<span style=\"color: #339933;\">,<\/span> <span style=\"color: #3366cc;\">'ExampleSheet'<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]For writing \/ downloading the workbook data to a file we have the following function:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\">XLSX.<span style=\"color: #660066;\">writeFile<\/span><span style=\"color: #009900;\">(<\/span>workbook<span style=\"color: #339933;\">,<\/span><span style=\"color: #3366cc;\">'Example.xlsx'<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Populate the sheets&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h3>Populate the sheets<\/h3>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The process of populating cells is done by the utils function that creates a sheet from the different data formats (json, aoa, DOM table).<\/p>\n<p>Let\u2019s take for example a json array of objects that looks like this:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">this<\/span>.<span style=\"color: #660066;\">employees<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">[<\/span>\n    <span style=\"color: #009900;\">{<\/span>\n      name<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'Alin'<\/span><span style=\"color: #339933;\">,<\/span> age<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">20<\/span><span style=\"color: #339933;\">,<\/span> experience<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">0<\/span><span style=\"color: #339933;\">,<\/span> phone<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'0764853255'<\/span><span style=\"color: #339933;\">,<\/span> birthDate<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">'2000-01-02'<\/span>\n    <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span>\n    <span style=\"color: #009900;\">{<\/span>\n      name<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'Marian'<\/span><span style=\"color: #339933;\">,<\/span> age<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">30<\/span><span style=\"color: #339933;\">,<\/span> experience<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">0<\/span><span style=\"color: #339933;\">,<\/span> phone<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'0248569122'<\/span><span style=\"color: #339933;\">,<\/span> birthDate<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">'1900-15-07'<\/span>\n    <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span>\n    <span style=\"color: #009900;\">{<\/span>\n      name<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">\"Ruben\"<\/span><span style=\"color: #339933;\">,<\/span> age<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">20<\/span><span style=\"color: #339933;\">,<\/span> experience<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">0<\/span><span style=\"color: #339933;\">,<\/span> phone<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'0723651241'<\/span><span style=\"color: #339933;\">,<\/span> birthDate<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">'2000-01-02'<\/span>\n    <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span>\n    <span style=\"color: #009900;\">{<\/span>\n      name<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'Ioana'<\/span><span style=\"color: #339933;\">,<\/span> age<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">30<\/span><span style=\"color: #339933;\">,<\/span> experience<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">0<\/span><span style=\"color: #339933;\">,<\/span> phone<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'0762315901'<\/span><span style=\"color: #339933;\">,<\/span> birthDate<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">'1900-01-02'<\/span>\n    <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span>\n    <span style=\"color: #009900;\">{<\/span>\n      name<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'Maria'<\/span><span style=\"color: #339933;\">,<\/span> age<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">25<\/span><span style=\"color: #339933;\">,<\/span> experience<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">3<\/span><span style=\"color: #339933;\">,<\/span> phone<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'0257888360'<\/span><span style=\"color: #339933;\">,<\/span> birthDate<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">'1995-01-02'<\/span>\n    <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span>\n    <span style=\"color: #009900;\">{<\/span>\n     name<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'Bogdan'<\/span><span style=\"color: #339933;\">,<\/span> age<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">23<\/span><span style=\"color: #339933;\">,<\/span> experience<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">1<\/span><span style=\"color: #339933;\">,<\/span> phone<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">'0737221235'<\/span><span style=\"color: #339933;\">,<\/span> birthDate<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">'1997-01-02'<\/span>\n    <span style=\"color: #009900;\">}<\/span>\n  <span style=\"color: #009900;\">]<\/span>\n<\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The function XLSX.utils.json_to_sheet(employees) takes the name and adds it as a header in the Excel spreadsheet, and the values from json and adds them as values in cells.<\/p>\n<p>The result will look like this:[\/et_pb_text][et_pb_image src=&#8221;\/\/cdn.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel-sample-spreadsheet.jpg&#8221; alt=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; sample spreadsheet&#8221; title_text=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; sample spreadsheet&#8221; _builder_version=&#8221;4.4.6&#8243;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Read &amp; Parse a workbook&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h3>Read &amp; Parse a workbook<\/h3>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The library makes it possible for you to read and parse through an Excel file. There are two options to do it:<\/p>\n<p>First with the <span style=\"text-decoration: underline;\">read<\/span> function:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">const<\/span> workbook<span style=\"color: #339933;\">:<\/span> XLSX.<span style=\"color: #660066;\">WorkBook<\/span> <span style=\"color: #339933;\">=<\/span> XLSX.<span style=\"color: #660066;\">read<\/span><span style=\"color: #009900;\">(<\/span>myData<span style=\"color: #339933;\">,<\/span> <span style=\"color: #009900;\">{<\/span>type<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">'binary'<\/span><span style=\"color: #339933;\">,<\/span> cellDates<span style=\"color: #339933;\">:<\/span> <span style=\"color: #003366; font-weight: bold;\">true<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The read function has 2 parameters: the first is the data you want to read; the second are the parsing options. MyData attribute is actually a bitestring representing the workbook. We can get that with the help of FileReader (which lets you read the content of files stored on other user\u2019s computer):[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">const<\/span> reader<span style=\"color: #339933;\">:<\/span> FileReader <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000066; font-weight: bold;\">new<\/span> FileReader<span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n    reader.<span style=\"color: #660066;\">onload<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">(<\/span>e<span style=\"color: #339933;\">:<\/span> any<span style=\"color: #009900;\">)<\/span> <span style=\"color: #339933;\">=&gt;<\/span> <span style=\"color: #009900;\">{<\/span>\n      <span style=\"color: #006600; font-style: italic;\">\/* read workbook *\/<\/span>\n      <span style=\"color: #000066; font-weight: bold;\">const<\/span> myData<span style=\"color: #339933;\">:<\/span> string <span style=\"color: #339933;\">=<\/span> e.<span style=\"color: #660066;\">target<\/span>.<span style=\"color: #660066;\">result<\/span><span style=\"color: #339933;\">;<\/span>\n<span style=\"color: #000066; font-weight: bold;\">const<\/span> workbook<span style=\"color: #339933;\">:<\/span> XLSX.<span style=\"color: #660066;\">WorkBook<\/span> <span style=\"color: #339933;\">=<\/span> XLSX.<span style=\"color: #660066;\">read<\/span><span style=\"color: #009900;\">(<\/span>myData<span style=\"color: #339933;\">,<\/span> <span style=\"color: #009900;\">{<\/span>type<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">'binary'<\/span><span style=\"color: #339933;\">,<\/span> cellDates<span style=\"color: #339933;\">:<\/span> <span style=\"color: #003366; font-weight: bold;\">true<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]Second with the <span style=\"text-decoration: underline;\">readFile<\/span> function:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">const<\/span> workbook<span style=\"color: #339933;\">:<\/span> XLSX.<span style=\"color: #660066;\">WorkBook<\/span> <span style=\"color: #339933;\">=<\/span> XLSX.<span style=\"color: #660066;\">readFile<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #3366cc;\">'Example.xlsx'<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #009900;\">{<\/span>type<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">'binary'<\/span><span style=\"color: #339933;\">,<\/span> cellDates<span style=\"color: #339933;\">:<\/span> <span style=\"color: #003366; font-weight: bold;\">true<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The <span style=\"text-decoration: underline;\">readFile<\/span> function differentiates from the read function by the first argument, which is the name of the file we want to read.<\/p>\n<p>In our example: for the parsing options, we have:<\/p>\n<ul>\n<li>the type: binary, which is used when you want to read the file as a Binary String (the most popular way of reading an Excel file),<\/li>\n<li>and the cellDates option set to true, which means that the dates are stored as type d (a JS Date object\/string to be parsed as Date).<\/li>\n<\/ul>\n<p>There are many more options to choose from, that can be found here: <a href=\"https:\/\/www.npmjs.com\/package\/xlsx#parsing-options\">https:\/\/www.npmjs.com\/package\/xlsx#parsing-options<\/a><\/p>\n<p>When parsing a spreadsheet, you can:<\/p>\n<ul>\n<li>choose to use the data as-is;<\/li>\n<li>or intervene and manipulate the information first (for every column or every cell, if needed).<\/li>\n<\/ul>\n<p>For example, let\u2019s take an Excel spreadsheet with dates in a column but in a mixed format (string, date, number). If we import the file in our app and want to read those dates, there will be considered as numbers (by default), and not the actual dates that they represent. For that, you may need to transform all those date formats to a new Date object that\u2019s valid in JS.<\/p>\n<p>The part of code that does that is the following:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">this<\/span>.<span style=\"color: #660066;\">detailsColumnMap<\/span>.<span style=\"color: #660066;\">forEach<\/span><span style=\"color: #009900;\">(<\/span>col <span style=\"color: #339933;\">=&gt;<\/span> <span style=\"color: #009900;\">{<\/span>\n    <span style=\"color: #006600; font-style: italic;\">\/\/ transform excel values to string type<\/span>\n    <span style=\"color: #000066; font-weight: bold;\">if<\/span> <span style=\"color: #009900;\">(<\/span>col.<span style=\"color: #660066;\">ModelProp<\/span> <span style=\"color: #339933;\">!==<\/span> <span style=\"color: #3366cc;\">'My Date Column'<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\n      excelData<span style=\"color: #009900;\">[<\/span>col.<span style=\"color: #660066;\">ModelProp<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> row<span style=\"color: #009900;\">[<\/span>col.<span style=\"color: #660066;\">Column<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">?<\/span> row<span style=\"color: #009900;\">[<\/span>col.<span style=\"color: #660066;\">Column<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">+<\/span> <span style=\"color: #3366cc;\">\"\"<\/span> <span style=\"color: #339933;\">:<\/span> row<span style=\"color: #009900;\">[<\/span>col.<span style=\"color: #660066;\">Column<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\n    <span style=\"color: #009900;\">}<\/span> <span style=\"color: #000066; font-weight: bold;\">else<\/span> <span style=\"color: #009900;\">{<\/span>\n      <span style=\"color: #006600; font-style: italic;\">\/\/for the column that has date values do the following<\/span>\n      let dateValue<span style=\"color: #339933;\">:<\/span> any<span style=\"color: #339933;\">;<\/span>\n      dateValue <span style=\"color: #339933;\">=<\/span> row<span style=\"color: #009900;\">[<\/span>col.<span style=\"color: #660066;\">Column<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\n&nbsp;\n&nbsp;\n      <span style=\"color: #006600; font-style: italic;\">\/\/check if date has string format, and transform it to Date object.<\/span>\n      <span style=\"color: #000066; font-weight: bold;\">if<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000066; font-weight: bold;\">typeof<\/span> dateValue <span style=\"color: #339933;\">===<\/span> <span style=\"color: #3366cc;\">'string'<\/span> <span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\n          let excelDate <span style=\"color: #339933;\">=<\/span> row<span style=\"color: #009900;\">[<\/span>col.<span style=\"color: #660066;\">Column<\/span><span style=\"color: #009900;\">]<\/span>.<span style=\"color: #660066;\">split<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #3366cc;\">'\/'<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n          <span style=\"color: #006600; font-style: italic;\">\/\/transform string to date format: mm\/dd\/yyyy<\/span>\n          let convertedDate <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000066; font-weight: bold;\">new<\/span> Date<span style=\"color: #009900;\">(<\/span>excelDate<span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">1<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">+<\/span><span style=\"color: #3366cc;\">'\/'<\/span><span style=\"color: #339933;\">+<\/span>excelDate<span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">0<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">+<\/span><span style=\"color: #3366cc;\">'\/'<\/span><span style=\"color: #339933;\">+<\/span>excelDate<span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">2<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n          excelData<span style=\"color: #009900;\">[<\/span>col.<span style=\"color: #660066;\">ModelProp<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> convertedDate.<span style=\"color: #660066;\">toString<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n&nbsp;\n&nbsp;\n        <span style=\"color: #006600; font-style: italic;\">\/\/check if date has JS Date format and display it as it is<\/span>\n      <span style=\"color: #009900;\">}<\/span> <span style=\"color: #000066; font-weight: bold;\">else<\/span> <span style=\"color: #000066; font-weight: bold;\">if<\/span> <span style=\"color: #009900;\">(<\/span>dateValue <span style=\"color: #000066; font-weight: bold;\">instanceof<\/span> Date<span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\n        excelData<span style=\"color: #009900;\">[<\/span>col.<span style=\"color: #660066;\">ModelProp<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> dateValue.<span style=\"color: #660066;\">toString<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n&nbsp;\n&nbsp;\n        <span style=\"color: #006600; font-style: italic;\">\/\/check if date has a number format, and transform is to a JS Date object<\/span>\n      <span style=\"color: #009900;\">}<\/span> <span style=\"color: #000066; font-weight: bold;\">else<\/span> <span style=\"color: #000066; font-weight: bold;\">if<\/span> <span style=\"color: #009900;\">(<\/span><span style=\"color: #000066; font-weight: bold;\">typeof<\/span> dateValue <span style=\"color: #339933;\">===<\/span> <span style=\"color: #3366cc;\">'number'<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\n        <span style=\"color: #006600; font-style: italic;\">\/\/transform number to Date<\/span>\n        excelData<span style=\"color: #009900;\">[<\/span>col.<span style=\"color: #660066;\">ModelProp<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000066; font-weight: bold;\">this<\/span>.<span style=\"color: #660066;\">excelDateToJSDate<\/span><span style=\"color: #009900;\">(<\/span>dateValue<span style=\"color: #009900;\">)<\/span>.<span style=\"color: #660066;\">toString<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n      <span style=\"color: #009900;\">}<\/span>\n    <span style=\"color: #009900;\">}<\/span>  \n  <span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n<\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The <span style=\"text-decoration: underline;\">detailsColumnMap<\/span> is a json array of objects representing a mapping of the columns in Excel.<\/p>\n<p>The function that transforms a number date format into a valid JS Date object is the following:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\">excelDateToJSDate<span style=\"color: #009900;\">(<\/span>serial<span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\n    <span style=\"color: #000066; font-weight: bold;\">const<\/span> utc_days  <span style=\"color: #339933;\">=<\/span> Math.<span style=\"color: #660066;\">floor<\/span><span style=\"color: #009900;\">(<\/span>serial <span style=\"color: #339933;\">-<\/span> <span style=\"color: #cc0000;\">25569<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n    <span style=\"color: #000066; font-weight: bold;\">const<\/span> utc_value <span style=\"color: #339933;\">=<\/span> utc_days <span style=\"color: #339933;\">*<\/span> <span style=\"color: #cc0000;\">86400<\/span><span style=\"color: #339933;\">;<\/span>                                        \n    <span style=\"color: #000066; font-weight: bold;\">const<\/span> date_info <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000066; font-weight: bold;\">new<\/span> Date<span style=\"color: #009900;\">(<\/span>utc_value <span style=\"color: #339933;\">*<\/span> <span style=\"color: #cc0000;\">1000<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n&nbsp;\n    <span style=\"color: #000066; font-weight: bold;\">const<\/span> fractional_day <span style=\"color: #339933;\">=<\/span> serial <span style=\"color: #339933;\">-<\/span> Math.<span style=\"color: #660066;\">floor<\/span><span style=\"color: #009900;\">(<\/span>serial<span style=\"color: #009900;\">)<\/span> <span style=\"color: #339933;\">+<\/span> <span style=\"color: #cc0000;\">0.0000001<\/span><span style=\"color: #339933;\">;<\/span>\n&nbsp;\n    let total_seconds <span style=\"color: #339933;\">=<\/span> Math.<span style=\"color: #660066;\">floor<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #cc0000;\">86400<\/span> <span style=\"color: #339933;\">*<\/span> fractional_day<span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n&nbsp;\n    <span style=\"color: #000066; font-weight: bold;\">const<\/span> seconds <span style=\"color: #339933;\">=<\/span> total_seconds <span style=\"color: #339933;\">%<\/span> <span style=\"color: #cc0000;\">60<\/span><span style=\"color: #339933;\">;<\/span>\n&nbsp;\n    total_seconds <span style=\"color: #339933;\">-=<\/span> seconds<span style=\"color: #339933;\">;<\/span>\n&nbsp;\n    <span style=\"color: #000066; font-weight: bold;\">const<\/span> hours <span style=\"color: #339933;\">=<\/span> Math.<span style=\"color: #660066;\">floor<\/span><span style=\"color: #009900;\">(<\/span>total_seconds <span style=\"color: #339933;\">\/<\/span> <span style=\"color: #009900;\">(<\/span><span style=\"color: #cc0000;\">60<\/span> <span style=\"color: #339933;\">*<\/span> <span style=\"color: #cc0000;\">60<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n    <span style=\"color: #000066; font-weight: bold;\">const<\/span> minutes <span style=\"color: #339933;\">=<\/span> Math.<span style=\"color: #660066;\">floor<\/span><span style=\"color: #009900;\">(<\/span>total_seconds <span style=\"color: #339933;\">\/<\/span> <span style=\"color: #cc0000;\">60<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #339933;\">%<\/span> <span style=\"color: #cc0000;\">60<\/span><span style=\"color: #339933;\">;<\/span>\n    <span style=\"color: #000066; font-weight: bold;\">return<\/span> <span style=\"color: #000066; font-weight: bold;\">new<\/span> Date<span style=\"color: #009900;\">(<\/span>date_info.<span style=\"color: #660066;\">getFullYear<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">,<\/span> date_info.<span style=\"color: #660066;\">getMonth<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">,<\/span> date_info.<span style=\"color: #660066;\">getDate<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">,<\/span> hours<span style=\"color: #339933;\">,<\/span> \n         minutes<span style=\"color: #339933;\">,<\/span> seconds<span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n  <span style=\"color: #009900;\">}<\/span><\/pre>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Manipulate cells (merge)&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h3>Manipulate cells (merge)<\/h3>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]We\u2019ll take the Excel file we created earlier and manipulate some cells in it.[\/et_pb_text][et_pb_image src=&#8221;\/\/cdn.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel-merge-cells.jpg&#8221; title_text=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; merge cells&#8221; _builder_version=&#8221;4.4.6&#8243;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;2vh||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]Let\u2019s try to merge the first 2 cells A1 with B1, the following code does that:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\">    <span style=\"color: #006600; font-style: italic;\">\/\/merge cells A1 and B1<\/span>\n    let merge <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">{<\/span>s<span style=\"color: #339933;\">:<\/span> <span style=\"color: #009900;\">{<\/span>r<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">0<\/span><span style=\"color: #339933;\">,<\/span> c<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">0<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span> e<span style=\"color: #339933;\">:<\/span><span style=\"color: #009900;\">{<\/span>r<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">0<\/span><span style=\"color: #339933;\">,<\/span> c<span style=\"color: #339933;\">:<\/span><span style=\"color: #cc0000;\">1<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">;<\/span>\n&nbsp;\n&nbsp;\n    <span style=\"color: #000066; font-weight: bold;\">if<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #339933;\">!<\/span>worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!merges'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #009900;\">)<\/span> worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!merges'<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">[<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\n    worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!merges'<\/span><span style=\"color: #009900;\">]<\/span>.<span style=\"color: #660066;\">push<\/span><span style=\"color: #009900;\">(<\/span>merge<span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]First we create the merge (setting the range that we want to merge &#8211; s: start, r=row, c=column, e:end).<\/p>\n<p>Then, if there are no merges existent, we create a new array of merges and add the merge we\u2019ve just created.<\/p>\n<p>Here\u2019s the result:[\/et_pb_text][et_pb_image src=&#8221;\/\/cdn.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel-merge-cells-completed.jpg&#8221; alt=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; merge cells completed&#8221; title_text=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; merge cells completed&#8221; _builder_version=&#8221;4.4.6&#8243;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;2vh||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]If you want to merge multiple cells, you can do the following:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\">let merge <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">[<\/span>\n      <span style=\"color: #009900;\">{<\/span> s<span style=\"color: #339933;\">:<\/span> <span style=\"color: #009900;\">{<\/span> r<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">1<\/span><span style=\"color: #339933;\">,<\/span> c<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">0<\/span> <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span> e<span style=\"color: #339933;\">:<\/span> <span style=\"color: #009900;\">{<\/span> r<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">2<\/span><span style=\"color: #339933;\">,<\/span> c<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">0<\/span> <span style=\"color: #009900;\">}<\/span> <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span>\n      <span style=\"color: #009900;\">{<\/span> s<span style=\"color: #339933;\">:<\/span> <span style=\"color: #009900;\">{<\/span> r<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">4<\/span><span style=\"color: #339933;\">,<\/span> c<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">0<\/span> <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span> e<span style=\"color: #339933;\">:<\/span> <span style=\"color: #009900;\">{<\/span> r<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">5<\/span><span style=\"color: #339933;\">,<\/span> c<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">0<\/span> <span style=\"color: #009900;\">}<\/span> <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span>\n      <span style=\"color: #009900;\">{<\/span> s<span style=\"color: #339933;\">:<\/span> <span style=\"color: #009900;\">{<\/span> r<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">2<\/span><span style=\"color: #339933;\">,<\/span> c<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">3<\/span> <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span> e<span style=\"color: #339933;\">:<\/span> <span style=\"color: #009900;\">{<\/span> r<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">4<\/span><span style=\"color: #339933;\">,<\/span> c<span style=\"color: #339933;\">:<\/span> <span style=\"color: #cc0000;\">3<\/span> <span style=\"color: #009900;\">}<\/span> <span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span>\n    <span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\n    worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!merges'<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> merge<span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]And the result will look like this:[\/et_pb_text][et_pb_image src=&#8221;\/\/cdn.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel-merge-cells-final.jpg&#8221; alt=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; merge cells final&#8221; title_text=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; merge cells final&#8221; _builder_version=&#8221;4.4.6&#8243;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Manipulate rows &amp; columns (hide\/unhide)&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h3>Manipulate rows &amp; columns (hide\/unhide)<\/h3>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]Hiding or unhiding a row\/column is similar to merging cells. Taking the same example as above, the before look like this:[\/et_pb_text][et_pb_image src=&#8221;\/\/cdn.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel-row-columns-hide-unhide.jpg&#8221; alt=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; row columns hide unhide&#8221; title_text=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; row columns hide unhide&#8221; _builder_version=&#8221;4.4.6&#8243;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;2vh||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The worksheet has an array of column properties objects: [<span style=\"text-decoration: underline;\">\u2018!cols\u2019<\/span>] &#8211; you can set the column visibility &amp; the width. Same for the rows: [<span style=\"text-decoration: underline;\">\u2018!rows\u2019<\/span>] &#8211; here, you can set the visibility and also the height and level of the row.<\/p>\n<p>So, in order to hide\/unhide some columns and rows, we have to do the following:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\">    <span style=\"color: #006600; font-style: italic;\">\/\/hide third column<\/span>\n    worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!cols'<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">[<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\n    worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!cols'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">2<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">{<\/span>hidden<span style=\"color: #339933;\">:<\/span> <span style=\"color: #003366; font-weight: bold;\">true<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">;<\/span>\n&nbsp;\n&nbsp;\n    <span style=\"color: #006600; font-style: italic;\">\/\/hide rows 3,5 &amp; 7<\/span>\n    worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!rows'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">[<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\n    worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!rows'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">2<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">{<\/span>hidden<span style=\"color: #339933;\">:<\/span> <span style=\"color: #003366; font-weight: bold;\">true<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">;<\/span>\n    worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!rows'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">4<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">{<\/span>hidden<span style=\"color: #339933;\">:<\/span> <span style=\"color: #003366; font-weight: bold;\">true<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">;<\/span>\n    worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'!rows'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #cc0000;\">6<\/span><span style=\"color: #009900;\">]<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">{<\/span>hidden<span style=\"color: #339933;\">:<\/span> <span style=\"color: #003366; font-weight: bold;\">true<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The result is the following:[\/et_pb_text][et_pb_image src=&#8221;\/\/cdn.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel-row-columns-hide-unhide-final.jpg&#8221; alt=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; row columns hide unhide final&#8221; title_text=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; row columns hide unhide final&#8221; _builder_version=&#8221;4.4.6&#8243;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Insert comments&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h3>Insert comments<\/h3>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]For the comments we have the following function:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #006600; font-style: italic;\">\/\/add comment to cell<\/span>\n    let cell <span style=\"color: #339933;\">=<\/span> worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'D2'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\n    XLSX.<span style=\"color: #660066;\">utils<\/span>.<span style=\"color: #660066;\">cell_add_comment<\/span><span style=\"color: #009900;\">(<\/span>cell<span style=\"color: #339933;\">,<\/span><span style=\"color: #3366cc;\">'This is my number'<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\n    XLSX.<span style=\"color: #660066;\">utils<\/span>.<span style=\"color: #660066;\">cell_add_comment<\/span><span style=\"color: #009900;\">(<\/span>worksheet<span style=\"color: #009900;\">[<\/span><span style=\"color: #3366cc;\">'E6'<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">,<\/span><span style=\"color: #3366cc;\">'This date is wrong'<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]Or we can do it like this:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\">    <span style=\"color: #000066; font-weight: bold;\">if<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #339933;\">!<\/span>worksheet.<span style=\"color: #660066;\">D2<\/span>.<span style=\"color: #660066;\">c<\/span><span style=\"color: #009900;\">)<\/span> worksheet.<span style=\"color: #660066;\">D2<\/span>.<span style=\"color: #660066;\">c<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">[<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\n    worksheet.<span style=\"color: #660066;\">D2<\/span>.<span style=\"color: #660066;\">c<\/span>.<span style=\"color: #660066;\">push<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">{<\/span>a<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">\"Me\"<\/span><span style=\"color: #339933;\">,<\/span> t<span style=\"color: #339933;\">:<\/span><span style=\"color: #3366cc;\">\"This is my number\"<\/span><span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]The result looks like this:[\/et_pb_text][et_pb_image src=&#8221;\/\/cdn.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel-comments.jpg&#8221; alt=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; comments&#8221; title_text=&#8221;Berg Software &#8211; JavaScript to Excel &#8211; comments&#8221; _builder_version=&#8221;4.4.6&#8243;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;1.5vh||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]You can even hide comments by adding the following line of code:[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<pre class=\"javascript\" style=\"font-family: monospace;\">worksheet.<span style=\"color: #660066;\">E6<\/span>.<span style=\"color: #660066;\">c<\/span>.<span style=\"color: #660066;\">hidden<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #003366; font-weight: bold;\">true<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.4.1&#8243; custom_padding=&#8221;|||0px||&#8221; locked=&#8221;off&#8221;][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Comparison &amp; Limitations&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h2>Comparisons &amp; Limitations<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]Reading a fairly large amount of data is possible, but going beyond some thresholds might result in crashes.<\/p>\n<p>As mentioned before: the free version of the library is slightly limited but still sufficient for most of the scenarios. More specialized features are available in the commercial version, such as styling, adding charts, macros, and VBAs and many more.<\/p>\n<p>The library runs inside a browser\u2019s JS Runtime Environment so it\u2019s dependent on the end-user\u2019s infrastructure. Heavy operations, involving large spreadsheets, can lead to performance problems for old browsers and old PCs.[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.4.1&#8243; custom_padding=&#8221;|||0px||&#8221; locked=&#8221;off&#8221;][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;_ (1)&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_font=&#8221;|300|||||||&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h2>__<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.7.7&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; hover_enabled=&#8221;0&#8243; border_color_left=&#8221;#ff6317&#8243; sticky_enabled=&#8221;0&#8243;]<\/p>\n<div><span lang=\"EN-GB\">In-browser tables and grids are still the most convenient option for accessing data and getting a quick first insight. But if your usage case involves deeper work with data that you can only pull from a web application, then exporting to Excel via JavaScript \/ SheetJS. At <a href=\"https:\/\/www.berg-software.com\/\">Berg Software<\/a>, we highly recommend it.<\/span><\/div>\n<div><\/div>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;_ (2)&#8221; _builder_version=&#8221;4.4.6&#8243; custom_margin=&#8221;6vh||6vh||false|false&#8221; custom_padding=&#8221;|20%||2.5vw|false|false&#8221; border_width_left=&#8221;1px&#8221; border_color_left=&#8221;#ff6317&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_font=&#8221;|300|||||||&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]<\/p>\n<h2>__<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.4.6&#8243; text_font=&#8221;|300|||||||&#8221; text_font_size=&#8221;1.1em&#8221; text_line_height=&#8221;1.4em&#8221; quote_font=&#8221;|700|||||||&#8221; quote_text_align=&#8221;left&#8221; quote_font_size=&#8221;16px&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;2em&#8221; header_3_font_size=&#8221;1.5em&#8221; header_4_font=&#8221;||||||||&#8221; header_4_font_size=&#8221;1.2em&#8221; header_4_line_height=&#8221;1.5em&#8221; header_5_font_size=&#8221;14px&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; border_color_left=&#8221;#ff6317&#8243;]Do *you* use JavaScript \/ SheetJS? How &amp; for each usage cases? <a href=\"mailto:contact@bergsoftprod.wpengine.com\">Let us know<\/a>![\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;3.22&#8243; background_color=&#8221;#eeeeee&#8221; custom_padding=&#8221;50px||50px||false|false&#8221; border_color_top=&#8221;#ff6317&#8243; global_module=&#8221;1642&#8243;][et_pb_row column_structure=&#8221;1_3,1_3,1_3&#8243; _builder_version=&#8221;4.4.1&#8243; custom_padding=&#8221;0px|||||&#8221; locked=&#8221;off&#8221;][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_social_media_follow _builder_version=&#8221;4.4.4&#8243; text_orientation=&#8221;left&#8221;][et_pb_social_media_follow_network social_network=&#8221;linkedin&#8221; url=&#8221;https:\/\/www.linkedin.com\/company\/berg-computers-srl\/&#8221; _builder_version=&#8221;4.4.4&#8243; background_color=&#8221;#007bb6&#8243; follow_button=&#8221;off&#8221; url_new_window=&#8221;on&#8221;]linkedin[\/et_pb_social_media_follow_network][et_pb_social_media_follow_network social_network=&#8221;twitter&#8221; url=&#8221;https:\/\/twitter.com\/berg_software&#8221; _builder_version=&#8221;4.4.4&#8243; background_color=&#8221;#00aced&#8221; follow_button=&#8221;off&#8221; url_new_window=&#8221;on&#8221;]twitter[\/et_pb_social_media_follow_network][et_pb_social_media_follow_network social_network=&#8221;facebook&#8221; url=&#8221;https:\/\/www.facebook.com\/bergCOMPUTERS&#8221; _builder_version=&#8221;4.4.4&#8243; background_color=&#8221;#3b5998&#8243; follow_button=&#8221;off&#8221; url_new_window=&#8221;on&#8221;]facebook[\/et_pb_social_media_follow_network][et_pb_social_media_follow_network social_network=&#8221;instagram&#8221; url=&#8221;https:\/\/www.instagram.com\/berg_software\/&#8221; _builder_version=&#8221;4.4.4&#8243; background_color=&#8221;#ea2c59&#8243; follow_button=&#8221;off&#8221; url_new_window=&#8221;on&#8221;]instagram[\/et_pb_social_media_follow_network][\/et_pb_social_media_follow][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_post_nav in_same_term=&#8221;on&#8221; show_next=&#8221;off&#8221; _builder_version=&#8221;4.4.1&#8243; title_text_color=&#8221;#ff6317&#8243; custom_padding=&#8221;|25px|||false|false&#8221;][\/et_pb_post_nav][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.4.1&#8243;][et_pb_post_nav in_same_term=&#8221;on&#8221; show_prev=&#8221;off&#8221; _builder_version=&#8221;4.4.1&#8243; title_text_color=&#8221;#ff6317&#8243; custom_padding=&#8221;|||25px|false|false&#8221;][\/et_pb_post_nav][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;CONTACT&#8221; _builder_version=&#8221;4.4.1&#8243; background_color=&#8221;#d2d2d2&#8243; custom_padding=&#8221;75px||75px||false|false&#8221;][et_pb_row column_structure=&#8221;1_4,3_4&#8243; admin_label=&#8221;Service Section Title&#8221; _builder_version=&#8221;4.4.1&#8243; custom_padding=&#8221;||25px||false|false&#8221; animation_direction=&#8221;top&#8221; locked=&#8221;off&#8221;][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][\/et_pb_column][et_pb_column type=&#8221;3_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.4.1&#8243; text_font=&#8221;|300|||||||&#8221; text_text_color=&#8221;#ffffff&#8221; text_line_height=&#8221;1.1em&#8221; header_5_font=&#8221;|600|||||||&#8221; header_5_text_color=&#8221;#ffffff&#8221; header_5_font_size=&#8221;14px&#8221; header_5_line_height=&#8221;1.5em&#8221; custom_margin=&#8221;||||false|false&#8221;]29 years in business | 2700 software projects | 760 clients | 24 countries<\/p>\n<h5>We turn ideas into software. What is yours?<\/h5>\n<p>[\/et_pb_text][et_pb_text admin_label=&#8221;Title&#8221; _builder_version=&#8221;4.4.1&#8243; header_text_align=&#8221;center&#8221; header_2_font=&#8221;|300|||||||&#8221; header_2_text_align=&#8221;left&#8221; header_2_text_color=&#8221;#ff6317&#8243; header_2_font_size=&#8221;50px&#8221; header_2_line_height=&#8221;0.9em&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;25px||25px||false|false&#8221;]<\/p>\n<h2>Get in touch<\/h2>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_4,3_4&#8243; _builder_version=&#8221;4.4.4&#8243;][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.4.4&#8243;][\/et_pb_column][et_pb_column type=&#8221;3_4&#8243; _builder_version=&#8221;4.4.4&#8243;][et_pb_contact_form email=&#8221;contact@bergsoftprod.wpengine.com&#8221; custom_message=&#8221;WEBFORM MESSAGE||et_pb_line_break_holder||\uff3f||et_pb_line_break_holder||FROM: %%Name%%||et_pb_line_break_holder||EMAIL: %%Email%%||et_pb_line_break_holder||PHONE NUMBER: %%Phone_number%%||et_pb_line_break_holder||COMPANY: %%Company_name%%||et_pb_line_break_holder||TERMS &amp; CONDITIONS: %%Terms_and_Conditions%%||et_pb_line_break_holder||DATA PRIVACY POLICY: %%Data_Privacy_Policy%%||et_pb_line_break_holder||\uff3f||et_pb_line_break_holder||MESSAGE:||et_pb_line_break_holder||%%Message%%&#8221; success_message=&#8221;Thank you for reaching out! Your message was sent. We will get back to you right away.&#8221; _builder_version=&#8221;4.4.4&#8243; form_field_background_color=&#8221;#d2d2d2&#8243; form_field_text_color=&#8221;#ffffff&#8221; form_field_focus_background_color=&#8221;#ffffff&#8221; form_field_focus_text_color=&#8221;#000000&#8243; title_level=&#8221;h2&#8243; title_font=&#8221;|300|||||||&#8221; title_text_color=&#8221;#ff6317&#8243; title_font_size=&#8221;30px&#8221; form_field_line_height=&#8221;1.5em&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;14px&#8221; button_text_color=&#8221;#ffffff&#8221; button_bg_color=&#8221;#ff6317&#8243; button_border_width=&#8221;0px&#8221; button_border_radius=&#8221;0px&#8221; button_icon=&#8221;%%3%%&#8221; button_on_hover=&#8221;off&#8221; border_color_all=&#8221;#ffffff&#8221; border_width_bottom=&#8221;1px&#8221;][et_pb_contact_field field_id=&#8221;Name&#8221; field_title=&#8221;Name *&#8221; fullwidth_field=&#8221;on&#8221; _builder_version=&#8221;4.4.4&#8243; form_field_background_color=&#8221;#d2d2d2&#8243; form_field_text_color=&#8221;#ffffff&#8221; form_field_focus_background_color=&#8221;#ffffff&#8221; form_field_focus_text_color=&#8221;#000000&#8243; border_width_bottom=&#8221;1px&#8221; button_text_size__hover_enabled=&#8221;off&#8221; button_one_text_size__hover_enabled=&#8221;off&#8221; button_two_text_size__hover_enabled=&#8221;off&#8221; button_text_color__hover_enabled=&#8221;off&#8221; button_one_text_color__hover_enabled=&#8221;off&#8221; button_two_text_color__hover_enabled=&#8221;off&#8221; button_border_width__hover_enabled=&#8221;off&#8221; button_one_border_width__hover_enabled=&#8221;off&#8221; button_two_border_width__hover_enabled=&#8221;off&#8221; button_border_color__hover_enabled=&#8221;off&#8221; button_one_border_color__hover_enabled=&#8221;off&#8221; button_two_border_color__hover_enabled=&#8221;off&#8221; button_border_radius__hover_enabled=&#8221;off&#8221; button_one_border_radius__hover_enabled=&#8221;off&#8221; button_two_border_radius__hover_enabled=&#8221;off&#8221; button_letter_spacing__hover_enabled=&#8221;off&#8221; button_one_letter_spacing__hover_enabled=&#8221;off&#8221; button_two_letter_spacing__hover_enabled=&#8221;off&#8221; button_bg_color__hover_enabled=&#8221;off&#8221; button_one_bg_color__hover_enabled=&#8221;off&#8221; button_two_bg_color__hover_enabled=&#8221;off&#8221;][\/et_pb_contact_field][et_pb_contact_field field_id=&#8221;Email&#8221; field_title=&#8221;Email address *&#8221; field_type=&#8221;email&#8221; fullwidth_field=&#8221;on&#8221; _builder_version=&#8221;4.4.4&#8243; button_text_size__hover_enabled=&#8221;off&#8221; button_one_text_size__hover_enabled=&#8221;off&#8221; button_two_text_size__hover_enabled=&#8221;off&#8221; button_text_color__hover_enabled=&#8221;off&#8221; button_one_text_color__hover_enabled=&#8221;off&#8221; button_two_text_color__hover_enabled=&#8221;off&#8221; button_border_width__hover_enabled=&#8221;off&#8221; button_one_border_width__hover_enabled=&#8221;off&#8221; button_two_border_width__hover_enabled=&#8221;off&#8221; button_border_color__hover_enabled=&#8221;off&#8221; button_one_border_color__hover_enabled=&#8221;off&#8221; button_two_border_color__hover_enabled=&#8221;off&#8221; button_border_radius__hover_enabled=&#8221;off&#8221; button_one_border_radius__hover_enabled=&#8221;off&#8221; button_two_border_radius__hover_enabled=&#8221;off&#8221; button_letter_spacing__hover_enabled=&#8221;off&#8221; button_one_letter_spacing__hover_enabled=&#8221;off&#8221; button_two_letter_spacing__hover_enabled=&#8221;off&#8221; button_bg_color__hover_enabled=&#8221;off&#8221; button_one_bg_color__hover_enabled=&#8221;off&#8221; button_two_bg_color__hover_enabled=&#8221;off&#8221;][\/et_pb_contact_field][et_pb_contact_field field_id=&#8221;Phone_number&#8221; field_title=&#8221;Phone number&#8221; required_mark=&#8221;off&#8221; fullwidth_field=&#8221;on&#8221; _builder_version=&#8221;4.4.4&#8243;][\/et_pb_contact_field][et_pb_contact_field field_id=&#8221;Company_name&#8221; field_title=&#8221;Company name&#8221; fullwidth_field=&#8221;on&#8221; _builder_version=&#8221;4.4.4&#8243;][\/et_pb_contact_field][et_pb_contact_field field_id=&#8221;Message&#8221; field_title=&#8221;Message *&#8221; field_type=&#8221;text&#8221; fullwidth_field=&#8221;on&#8221; _builder_version=&#8221;4.4.4&#8243; form_field_background_color=&#8221;#d2d2d2&#8243; form_field_focus_background_color=&#8221;#ffffff&#8221; form_field_focus_text_color=&#8221;#000000&#8243; border_width_bottom=&#8221;1px&#8221; button_text_size__hover_enabled=&#8221;off&#8221; button_one_text_size__hover_enabled=&#8221;off&#8221; button_two_text_size__hover_enabled=&#8221;off&#8221; button_text_color__hover_enabled=&#8221;off&#8221; button_one_text_color__hover_enabled=&#8221;off&#8221; button_two_text_color__hover_enabled=&#8221;off&#8221; button_border_width__hover_enabled=&#8221;off&#8221; button_one_border_width__hover_enabled=&#8221;off&#8221; button_two_border_width__hover_enabled=&#8221;off&#8221; button_border_color__hover_enabled=&#8221;off&#8221; button_one_border_color__hover_enabled=&#8221;off&#8221; button_two_border_color__hover_enabled=&#8221;off&#8221; button_border_radius__hover_enabled=&#8221;off&#8221; button_one_border_radius__hover_enabled=&#8221;off&#8221; button_two_border_radius__hover_enabled=&#8221;off&#8221; button_letter_spacing__hover_enabled=&#8221;off&#8221; button_one_letter_spacing__hover_enabled=&#8221;off&#8221; button_two_letter_spacing__hover_enabled=&#8221;off&#8221; button_bg_color__hover_enabled=&#8221;off&#8221; button_one_bg_color__hover_enabled=&#8221;off&#8221; button_two_bg_color__hover_enabled=&#8221;off&#8221;][\/et_pb_contact_field][et_pb_contact_field field_id=&#8221;Terms_and_Conditions&#8221; field_title=&#8221; &#8221; field_type=&#8221;checkbox&#8221; checkbox_options=&#8221;%91{%22value%22:%22I have read and accepted the Terms and Conditions%22,%22checked%22:0,%22dragID%22:-1}%93&#8243; fullwidth_field=&#8221;on&#8221; _builder_version=&#8221;4.4.4&#8243;][\/et_pb_contact_field][et_pb_contact_field field_id=&#8221;Data_Privacy_Policy&#8221; field_title=&#8221; &#8221; field_type=&#8221;checkbox&#8221; checkbox_options=&#8221;%91{%22value%22:%22I have read and accepted the Data Privacy Policy%22,%22checked%22:0,%22dragID%22:-1}%93&#8243; fullwidth_field=&#8221;on&#8221; _builder_version=&#8221;4.4.4&#8243;][\/et_pb_contact_field][\/et_pb_contact_form][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A frontend technique that pulls Excel files from the grids \/ tables within a web application, using JavaScript.<\/p>\n","protected":false},"author":11,"featured_media":5630,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"2880","footnotes":""},"categories":[138,33],"tags":[],"class_list":["post-5589","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to","category-insights"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v16.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to: Get browser data into Excel with SheetJS | Berg Software<\/title>\n<meta name=\"description\" content=\"SheetJS is the JavaScript library that allows parsing and writing of various spreadsheets formats, including Excel\u2019s xlsx.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to: Get browser data into Excel with SheetJS | Berg Software\" \/>\n<meta property=\"og:description\" content=\"SheetJS is the JavaScript library that allows parsing and writing of various spreadsheets formats, including Excel\u2019s xlsx.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/\" \/>\n<meta property=\"og:site_name\" content=\"Berg Software\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/bergCOMPUTERS\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-02T06:22:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-16T13:47:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@berg_software\" \/>\n<meta name=\"twitter:site\" content=\"@berg_software\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"18 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.berg-software.com\/en\/#organization\",\"name\":\"Berg Software\",\"url\":\"https:\/\/www.berg-software.com\/en\/\",\"sameAs\":[\"https:\/\/www.facebook.com\/bergCOMPUTERS\/\",\"https:\/\/www.instagram.com\/berg_software\/\",\"https:\/\/www.linkedin.com\/company\/berg-computers-srl\/\",\"https:\/\/www.youtube.com\/channel\/UCw1FfcRJnC-CoKPwlcM10Iw\",\"https:\/\/twitter.com\/berg_software\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.berg-software.com\/en\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/berg-software.com\/wp-content\/uploads\/berg-software-logo.png\",\"contentUrl\":\"https:\/\/berg-software.com\/wp-content\/uploads\/berg-software-logo.png\",\"width\":512,\"height\":512,\"caption\":\"Berg Software\"},\"image\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.berg-software.com\/en\/#website\",\"url\":\"https:\/\/www.berg-software.com\/en\/\",\"name\":\"Berg Software\",\"description\":\"We turn ideas into software.\",\"publisher\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.berg-software.com\/en\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel.jpg\",\"contentUrl\":\"https:\/\/www.berg-software.com\/wp-content\/uploads\/Berg-Software-JavaScript-to-Excel.jpg\",\"width\":1200,\"height\":600,\"caption\":\"Berg Software - JavaScript to Excel\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/#webpage\",\"url\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/\",\"name\":\"How to: Get browser data into Excel with SheetJS | Berg Software\",\"isPartOf\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/#primaryimage\"},\"datePublished\":\"2020-09-02T06:22:17+00:00\",\"dateModified\":\"2022-09-16T13:47:49+00:00\",\"description\":\"SheetJS is the JavaScript library that allows parsing and writing of various spreadsheets formats, including Excel\\u2019s xlsx.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.berg-software.com\/en\/\",\"url\":\"https:\/\/www.berg-software.com\/en\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.berg-software.com\/en\/category\/insights\/\",\"url\":\"https:\/\/www.berg-software.com\/en\/category\/insights\/\",\"name\":\"Insights\"}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/\",\"url\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/\",\"name\":\"How to: Get browser data into Excel with SheetJS\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/#\/schema\/person\/1afa4ac5374a3abc08592d39de8471ae\"},\"headline\":\"How to: Get browser data into Excel with SheetJS\",\"datePublished\":\"2020-09-02T06:22:17+00:00\",\"dateModified\":\"2022-09-16T13:47:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.berg-software.com\/en\/get-browser-data-into-excel-with-sheetjs\/#primaryimage\"},\"articleSection\":\"How to,Insights\",\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.berg-software.com\/en\/#\/schema\/person\/1afa4ac5374a3abc08592d39de8471ae\",\"name\":\"Raluca Olari\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/posts\/5589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/comments?post=5589"}],"version-history":[{"count":0,"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/posts\/5589\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/media\/5630"}],"wp:attachment":[{"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/media?parent=5589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/categories?post=5589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.berg-software.com\/en\/wp-json\/wp\/v2\/tags?post=5589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}