{"id":10229,"date":"2022-05-23T16:22:40","date_gmt":"2022-05-23T13:22:40","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=10229"},"modified":"2026-06-30T17:20:52","modified_gmt":"2026-06-30T14:20:52","slug":"dhtmlx-spreadsheet-4-3","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/dhtmlx-spreadsheet-4-3\/","title":{"rendered":"DHTMLX Spreadsheet 4.3: Select and Time Editors, Row Freezing, Multiline Content, Data Sorting, and More"},"content":{"rendered":"<p>We are delighted to announce the official release of DHTMLX Spreadsheet v4.3. Despite its minor status, this update of our JavaScript spreadsheet library comes with a pack of new features to boost your abilities in data management. First of all, it includes a highly requested select editor and the ability to freeze table rows. It has also become possible to enter multiline content into a cell, sort spreadsheet data, and apply the time format for your data. Apart from that, our team has also extended the list of available Excel formulas and designed a new API approach to tracking and handling spreadsheet events.<\/p>\n<p><strong><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSpreadsheet\/download.shtml\" rel=\"noopener\" target=\"_blank\">Evaluate a new version of DHTMLX Spreadsheet ><\/a><\/strong><\/p>\n<p>Let\u2019s get acquainted with new capabilities delivered in v4.3 in more detail.<\/p>\n<h5>Select Editor with Cell Validation<\/h5>\n<p>Populating tables with repetitive information by hand can be a time-consuming and tedious task. Therefore, we decided to help you automate this process by introducing a <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/working_with_ssheet\/#validating-cells\" rel=\"noopener\" target=\"_blank\">select editor providing a drop-down list of options<\/a> to save  time on manual entry. The editor is equipped with cell validation for reducing human error by highlighting the cell when an invalid value is entered.  <\/p>\n<p>The editor is brought into play with code or right from the UI.<\/p>\n<p>In terms of programming, the select editor with validation can be specified via the new <strong>editor<\/strong> attribute of a <strong>cell<\/strong> object.<\/p>\n<div class=\"codecolorer-container javascript default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> data <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ add drop-down lists to cells<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span> cell<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;C2&quot;<\/span><span class=\"sy0\">,<\/span> value<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Banana&quot;<\/span><span class=\"sy0\">,<\/span> editor<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span>type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;select&quot;<\/span><span class=\"sy0\">,<\/span> options<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;Banana&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;Orange&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;Pineapple&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;Apple&quot;<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ more data<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><em>Check the details on the <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/api\/spreadsheet_parse_method\/\" rel=\"noopener\" target=\"_blank\">documentation page<\/a> dedicated to the updated <strong>parse()<\/strong> method.<\/em><\/p>\n<p>Another way to activate validation for certain cells and add an array of options in the editor, you need to utilize the <strong><a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/api\/spreadsheet_setvalidation_method\/\" rel=\"noopener\" target=\"_blank\">setValidation<\/a>()<\/strong> method with corresponding <strong>cell<\/strong> and <strong>options<\/strong> parameters.<\/p>\n<div class=\"codecolorer-container javascript default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">spreadsheet.<span class=\"me1\">setValidation<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;C2:C5&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;Banana&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;Orange&quot;<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">&quot;Pineapple&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;Apple&quot;<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>If it is necessary to disable the editor with validation, you need to set <em>null \/ 0 \/ false \/ undefined<\/em> as a value for the <strong>options<\/strong> parameter.<\/p>\n<p>There are two ways for creating a drop-down list with validation from the UI:<\/p>\n<ul>\n<li>By typing list items manually<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2022\/05\/image3.gif\" alt=\"Spreadsheet v4.3 - select editor\" width=\"931\" height=\"444\" class=\"aligncenter size-full wp-image-10233\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/q29pqd6a\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<ul>\n<li>By using a range of predefined items<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2022\/05\/image2-1.gif\" alt=\"Spreadsheet v4.3 - Select editor\" width=\"908\" height=\"444\" class=\"aligncenter size-full wp-image-10234\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/q29pqd6a\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>End-users can directly access this functionality by selecting the &#8220;Data validation&#8221; option in the &#8220;Data&#8221; menu of the spreadsheet. To remove a drop-down list with validation from one or several cells, users will have to click on the &#8220;Remove Validation&#8221; button in the &#8220;Data validation&#8221; menu.<\/p>\n<h5>Frozen Rows<\/h5>\n<p>The ability to freeze particular table panes is crucial for allowing end-users to conveniently compare and analyze worksheets with a lot of data. That is why the possibility to fix spreadsheet columns provided in v4.0 is now complemented with the similar capability for rows. With this novelty, you can <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/configuration\/#frozen-rows-and-columns\" rel=\"noopener\" target=\"_blank\">keep a specific number of rows at the top of the spreadsheet always visible<\/a>, while the rest of table rows remain scrollable.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2022\/05\/image7.gif\" alt=\"Spreadsheet v4.3 - Frozen columns\" width=\"880\" height=\"432\" class=\"aligncenter size-full wp-image-10235\" \/><\/p>\n<div class=\"codecolorer-container javascript default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> spreadsheet <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Spreadsheet<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;spreadsheet&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; topSplit<span class=\"sy0\">:<\/span> <span class=\"nu0\">4<\/span><span class=\"sy0\">,<\/span> <span class=\"co1\">\/\/ the number of rows to &quot;freeze&quot;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ other config parameters<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><a href=\"https:\/\/snippet.dhtmlx.com\/yadaiaxb\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>To make this feature workable, you have to use the new <strong><a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/migration\/#freezingunfreezing-functionality\" rel=\"noopener\" target=\"_blank\">topSplit<\/a><\/strong> property and indicate the number of rows to be frozen as its value.<\/p>\n<h5>Multiline Cell Content<\/h5>\n<p>One more useful thing offered in v4.3 is the ability to make a long text appear on multiple lines i.e. <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/data_formatting\/#wrap-text-in-a-cell\" rel=\"noopener\" target=\"_blank\">wrap text in a cell<\/a>. This feature will help end-users see all the text even when its cell isn\u2019t active. It can be actuated via the &#8220;Wrap&#8221; option that appears after clicking on the &#8220;Text wrapping&#8221; button in the toolbar or in the Format menu. If users need only a part of the content  to be visible, they should choose &#8220;Clip&#8221; in the same menu.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2022\/05\/image6.gif\" alt=\"DHTMLX Spreadhseet v4.3 - Multiline content\" width=\"912\" height=\"588\" class=\"aligncenter size-full wp-image-10236\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/yadaiaxb\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>When end-users change the column\u2019s width, text wrapping will be automatically adjusted.<\/p>\n<h5>Sorting Columns<\/h5>\n<p>When working with complex Excel-like tables, it is great to have an opportunity to quickly manipulate data using various operations. The new version of our Spreadsheet brings in the ability to <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/sorting_data\/\" rel=\"noopener\" target=\"_blank\">sort data in columns<\/a> via API or UI. <\/p>\n<p>Programmatically, this functionality is enabled with the <strong><a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/api\/spreadsheet_sortcells_method\/\" rel=\"noopener\" target=\"_blank\">sortCells<\/a>()<\/strong> method with two required parameters. The <strong>cell<\/strong> parameter specifies the range of cells to be sorted via their ids. The <strong>dir<\/strong> parameter determines the direction of sorting and takes the following values:<\/p>\n<ul>\n<li>&#8220;1&#8221; for ascending (0 to 9, and\/or A to Z) order,<\/li>\n<li>&#8220;-1&#8221; for descending (9 to 0, and\/or Z to A) order.<\/li>\n<\/ul>\n<div class=\"codecolorer-container javascript default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> spreadsheet <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Spreadsheet<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;spreadsheet&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp;topSplit<span class=\"sy0\">:<\/span> <span class=\"nu0\">1<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/ sorts data on the first sheet<\/span><br \/>\nspreadsheet.<span class=\"me1\">sortCells<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;B2:B11&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">-<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/ sorts data on several sheets<\/span><br \/>\nspreadsheet.<span class=\"me1\">sortCells<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Income!B2:B11,Report!B2:B11, Expenses!C2:C11&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Now, end-users can also sort spreadsheet data on the fly in the following ways:<\/p>\n<ul>\n<li>By column<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2022\/05\/image1.gif\" alt=\"DHTMLX Spreadsheet v4.3 - Sorting by a column\" width=\"912\" height=\"588\" class=\"aligncenter size-full wp-image-10238\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/yadaiaxb\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<ul>\n<li>By range<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2022\/05\/image5.gif\" alt=\"DHTMLX Spreadsheet v4.3 - Sorting by range\" width=\"912\" height=\"588\" class=\"aligncenter size-full wp-image-10239\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/yadaiaxb\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>The sorting feature is put into practice via the context menu called with a right click on a cell or via the &#8220;Data&#8221; menu of the spreadsheet. If it is necessary to exclude any of top rows from sorting, you\u2019ll need to apply the <strong><a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/migration\/#freezingunfreezing-functionality\" rel=\"noopener\" target=\"_blank\">topSplit<\/a><\/strong> property.<\/p>\n<h5>New Excel Functions<\/h5>\n<p>We continue strengthening your capacity to manipulate data with new 70+ Excel functions that work out-of-the-box in JavaScript spreadsheets built with DHTMLX. Starting from v4.3, our Spreadsheet component also supports lookup functions such as LOOKUP, XLOOKUP, VLOOKUP, HLOOKUP, MATCH, XMATCH, INDEX. These formulas are essential when searching for a specific value across many rows and columns. In addition, we\u2019ve also extended the list of predefined  Date, Financial, Math, and String functions.<br \/>\n<iframe loading=\"lazy\" src=\"https:\/\/snippet.dhtmlx.com\/wux2b35b?mode=result\" frameborder=\"0\" width=\"100%\" height=\"840\"><\/iframe><br \/>\nAll new formulas are provided in the corresponding <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/functions\/#functions\" rel=\"noopener\" target=\"_blank\">section<\/a> of our documentation and marked with the &#8220;added in v4.3&#8221; label.<\/p>\n<h5>Time Format<\/h5>\n<p>In v4.3, the list of predefined number formats provided in our library has been expanded with the <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/number_formatting\/#time-format\" rel=\"noopener\" target=\"_blank\">time format<\/a>. Now you can display numeric values in cells of the JavaScript Spreadsheet using 12- or 24-hour time formats. The required time format is set via <strong>timeFormat<\/strong> property:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2022\/05\/image4.gif\" alt=\"Spreadsheet v4.3 - Time format\" width=\"699\" height=\"427\" class=\"aligncenter size-full wp-image-10242\" \/><\/p>\n<div class=\"codecolorer-container javascript default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> spreadsheet <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Spreadsheet<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;spreadsheet&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp;timeFormat<span class=\"sy0\">:<\/span> number <span class=\"co1\">\/\/ 12 | 24<\/span><br \/>\n&nbsp; &nbsp;<span class=\"co1\">\/\/ other config parameters<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><a href=\"https:\/\/snippet.dhtmlx.com\/q29pqd6a\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>The time format is now available together with other format options in the corresponding menu of the spreadsheet. We\u2019ve also incorporated the TimePicker widget to make it easier for users to manipulate the time parameter. By default, time in cells is shown in the 12-hour format. <\/p>\n<h5>Other Improvements<\/h5>\n<p>Our development team also designed a <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/api\/overview\/actions_overview\/\" rel=\"noopener\" target=\"_blank\">new way of working with Spreadsheet events<\/a>. It is based on a pair of the <strong><a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/api\/spreadsheet_beforeaction_event\/\" rel=\"noopener\" target=\"_blank\">beforeAction<\/a><\/strong>\/<strong><a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/api\/spreadsheet_afteraction_event\/\" rel=\"noopener\" target=\"_blank\">afterAction<\/a><\/strong> events intended to make your code more compact and readable.<\/p>\n<div class=\"codecolorer-container javascript default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">spreadsheet.<span class=\"me1\">events<\/span>.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;beforeAction&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#40;<\/span>actionName<span class=\"sy0\">,<\/span> config<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>actionName <span class=\"sy0\">===<\/span> <span class=\"st0\">&quot;addColumn&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span>actionName<span class=\"sy0\">,<\/span> config<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw1\">return<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp;<span class=\"co1\">\/\/ more actions<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nspreadsheet.<span class=\"me1\">events<\/span>.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;afterAction&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#40;<\/span>actionName<span class=\"sy0\">,<\/span> config<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>actionName <span class=\"sy0\">===<\/span> <span class=\"st0\">&quot;addColumn&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span>actionName<span class=\"sy0\">,<\/span> config<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp;<span class=\"co1\">\/\/ more actions<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>These events are triggered before an action is performed and help to clarify the nature of this action. As a result, you won\u2019t need to apply before- and after- events each time when some changes occur in the JavaScript spreadsheet. <\/p>\n<p>At the same time, you can still use the traditional approach since all existing Spreadsheet events  remain functional:<\/p>\n<div class=\"codecolorer-container javascript default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">spreadsheet.<span class=\"me1\">events<\/span>.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;afterColumnAdd&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>cell<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp;console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;A new column is added&quot;<\/span><span class=\"sy0\">,<\/span> cell<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nspreadsheet.<span class=\"me1\">events<\/span>.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;beforeColumnAdd&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>cell<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp;console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;A new column will be added&quot;<\/span><span class=\"sy0\">,<\/span> cell<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"kw1\">return<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>The full list of spreadsheet actions is available in this <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/api\/overview\/actions_overview\/#list-of-actions\" rel=\"noopener\" target=\"_blank\">section<\/a> of our documentation.<\/p>\n<p>There is one more novelty that contributes to a better user experience with DHTMLX Spreadsheet. From now on, you can <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/api\/spreadsheet_load_method\/#loading-json-files\" rel=\"noopener\" target=\"_blank\">import<\/a> and <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/api\/export_json_method\/\" rel=\"noopener\" target=\"_blank\">export<\/a> spreadsheet data to a JSON file.<\/p>\n<p>And lastly, we would like to inform you that v4.3 is the last version of our Spreadsheet library that works in Internet Explorer. In the next versions of our product, the support for this browser will be discontinued.<\/p>\n<p>Look through all the new stuff prepared by our team for this release on the &#8220;<a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/whats_new\/#version-43\" rel=\"noopener\" target=\"_blank\">What\u2019s new<\/a>&#8221; page.<\/p>\n<p>To move from theory to practice right away, you can download a <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSpreadsheet\/download.shtml\" rel=\"noopener\" target=\"_blank\">free 30-day trial version<\/a> of our Spreadsheet component.<\/p>\n<p>If you are already one of the DHTMLX clients, take the opportunity to access DHTMLX Spreadhseet v4.3 via your <a href=\"https:\/\/dhtmlx.com\/clients\/\" rel=\"noopener\" target=\"_blank\">Client\u2019s Area<\/a>.<\/p>\n<p>Stay tuned for more DHTMLX releases in the coming months!<\/p>\n<h5>Related Materials:<\/h5>\n<ul>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/whats_new\/#version-43\" rel=\"noopener\" target=\"_blank\">What\u2019s new in v4.3<\/a><\/li>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/\" rel=\"noopener\" target=\"_blank\">DHTMLX Spreadsheet documentation<\/a><\/li>\n<li><a href=\"https:\/\/snippet.dhtmlx.com\/atl9gd4h?text=Spreadsheet\" rel=\"noopener\" target=\"_blank\">DHTMLX Spreadsheet code snippets<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSpreadsheet\/download.shtml\" rel=\"noopener\" target=\"_blank\">Free 30-day trial version<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>We are delighted to announce the official release of DHTMLX Spreadsheet v4.3. Despite its minor status, this update of our JavaScript spreadsheet library comes with a pack of new &#8230;<\/p>\n","protected":false},"author":101014,"featured_media":10243,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[33,34],"class_list":["post-10229","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-releases","tag-all-posts","tag-spreadsheet"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/10229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/users\/101014"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=10229"}],"version-history":[{"count":15,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/10229\/revisions"}],"predecessor-version":[{"id":15762,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/10229\/revisions\/15762"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/10243"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=10229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=10229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=10229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}