Keikai Spreadsheet

# 6.3.0
Bug
[KEIKAI-631] - calling getEvaluatedDependents() twice for 1 cell value change
[KEIKAI-843] - Following KEIKAI-793, Charts can be rendered with axis index -1, which causes Highcharts error #18
[KEIKAI-844] - ChartsModelManager out of bound error when a chart contains series of different lenghts
[KEIKAI-848] - collaboration mode: fail to show collaborator's selectionbox and user name
[KEIKAI-851] - KEIKAI doesn't append % when editing a blank cell with percentage format
[KEIKAI-852] - MATCH function returns #VALUE!
[KEIKAI-855] - jakarta binary zip files on Maven repository don't contain jakarta jar
[KEIKAI-856] - Known vulnerabilities in Keikai Spreadsheet Model
[KEIKAI-857] - Upgrade to POI 5.5.1 version
[KEIKAI-870] - Missing _xlfn. prefix when exporting new Excel functions

New Feature
[KEIKAI-580] - Format cell dialog shows a regional date format upon the current locale
[KEIKAI-820] - Add Support for Custom Number Format ;;; (3 semicolons)
[KEIKAI-824] - unhide a zero width column automatically
[KEIKAI-829] - Allow autoRefresh false to batch range.clearContents() and range.setValue()
[KEIKAI-849] - support LET()
[KEIKAI-854] - Close dropdown list when scrolling
[KEIKAI-865] - Support FORMULATEXT and ISFORMULA functions
[KEIKAI-866] - Support XIRR function
[KEIKAI-869] - Support 96 additional Excel functions

# 6.2.0
Bug
[KEIKAI-634] - keikai doesn't hide selection when not allowed selecting all cells
[KEIKAI-730] - quick edit doesn't work after switching sheets
[KEIKAI-746] - failed to export a row height under protection with "format rows" allowed
[KEIKAI-769] - cell content cut off at page boundary when exporting to a PDF
[KEIKAI-777] - XlsxExporter creates autofilter with column index instead of object index, cause IndexOutOfBounds
[KEIKAI-808] - an empty cell with the type specified fails the importing
[KEIKAI-822] - cannot load a file from the classpath web resource path
[KEIKAI-823] - data validation popup renders at wrong position
[KEIKAI-828] - Negative number rounded to zero still display a minus (-) sign
[KEIKAI-830] - io.keikai.model.impl.BookImpl.cloneBook() fails with DataValidation or conditional formatting
[KEIKAI-831] - if vlookup table array reference a cell that is already evaluated, produce a CIRCULAR_REF_ERROR
[KEIKAI-836] - freeze columns shifts a merged cell
[KEIKAI-837] - cannot accept any keyboard input with mobile browsers
[KEIKAI-841] - XSS vulnerability in formula bar

New Feature
[KEIKAI-14] - Support chart customization
[KEIKAI-790] - Support add event listener for specific range value result changes
[KEIKAI-815] - Show chart name when clicking a chart
[KEIKAI-825] - Show image name when clicking a image
[KEIKAI-826] - Able to change the name of image and chart by namebox
[KEIKAI-827] - Spreadsheet supports event listener when clicking the charts
[KEIKAI-832] - refactor AbstractExcelExporter.exportCell() to several smaller methods

Improvement
[KEIKAI-733] - Cache results of DecimalFormat from DataFormatter
[KEIKAI-839] - Upgrade to POI 5.4.1 version

# 6.1.0.1
Bug
[KEIKAI-821] - display date format incorrectly with unexpected country code

# 6.1.0
Bug
[KEIKAI-124] - a text on a left frozen columns doesn't overflow to its right adjacent cell
[KEIKAI-381] - set 150 columns width to 0px produces a javascript error
[KEIKAI-406] - Table Structure Reference dependency is too coarse grain
[KEIKAI-411] - Issue200Test (testZSS342_1) complains
[KEIKAI-412] - Issue200Test (testZSS342_2) complains
[KEIKAI-413] - Issue200Test (testZSS214) complains
[KEIKAI-414] - Issue1114Test complains
[KEIKAI-449] - lots of merged cells causes bad rendering performance
[KEIKAI-451] - a browser responds to clicking a cell slowly
[KEIKAI-545] - Uppercase class name in toolbar dropdown
[KEIKAI-633] - auto fill overlaps merged cell should work as excel
[KEIKAI-634] - keikai doesn't hide selection when not allowed selecting all cells
[KEIKAI-642] - copy paste doesn't work in frozen areas after calling Spreadsheet.notifyVisibleAreaChange()
[KEIKAI-651] - unhide rows causes a sparkline unexpected larger
[KEIKAI-697] - Crossing another sheet reference won't work after finish editing
[KEIKAI-712] - Combobox in custom AutoFilter dialog is truncated by Insufficient window width
[KEIKAI-727] - the border of selection box doesn't align with the selected cell's actual border
[KEIKAI-735] - when specifying a cell address in the 2nd parameter of INDEX(), it doesn't get cell value update
[KEIKAI-736] - Unexpected scroll after sheet selection
[KEIKAI-741] - dependent cache causes dependents to not be gathered, if already gathered for a different target
[KEIKAI-742] - Cannot click to reference a cell of another sheet in a formula
[KEIKAI-744] - fail to move a chart by dragging it after scrolling a sheet
[KEIKAI-746] - failed to export a row height under protection with "format rows" allowed
[KEIKAI-747] - a comment doesn't accept a font size with a double number
[KEIKAI-750] - cell text not updated before server-side formatting, causes incorrect formatting after KEIKAI-470
[KEIKAI-757] - Sheet Selection Overridden by Internal Event When Hiding a Sheet
[KEIKAI-759] - failed to resize a chart after scrolling down a sheet
[KEIKAI-767] - NotSerializableException Thrown when Cloning Book
[KEIKAI-768] - fail to export a file with 2 comments or more
[KEIKAI-770] - A Formula with DATEDIF function calculated to incorrect value
[KEIKAI-771] - Copy area did not show when press Ctrl-C
[KEIKAI-772] - keikai renders a best-fit column width quite differently from Excel
[KEIKAI-773] - switching sheets causes a js error
[KEIKAI-775] - display zero value in a wrong way under a custom format
[KEIKAI-776] - onCellFocus event listener stops pasting
[KEIKAI-784] - Crossing another sheet reference with different visible range won't work after finish editing
[KEIKAI-788] - Keikai format reads international currency characters or currency codes with square brackets
[KEIKAI-791] - upgrade zkchart 11.4.7.0 for zk 10
[KEIKAI-792] - following POI update, chart export title formula instead of title text, causes error in title
[KEIKAI-793] - keikai renders a combination chart with a scatter and a column differently from Excel
[KEIKAI-794] - Spreadsheet cannot be created if ZK is Freshly version
[KEIKAI-795] - Upgrade bootstrap v4.3.1 to v5 for security vulnerabilities
[KEIKAI-799] - CVE-2024-47554 for commons-io version 2.13.0
[KEIKAI-800] - Error with (Node with hex-inp is not found!)
[KEIKAI-801] - CVE-2024-25710: commons-compress-1.25.0
[KEIKAI-803] - each exporting doubles the number of default cell style
[KEIKAI-812] - wrap text in a merged cell is out of the cell's boundary
[KEIKAI-813] - fail to insert a cell reference in a formula after '<' character
[KEIKAI-818] - A Formula with DATEDIF function calculated to incorrect value when the years are not the same
[KEIKAI-819] - Seems SUMIF function did not handle #REF! properly. Calculate to incorrect results

New Feature
[KEIKAI-520] - import/render/export chart area Fill and Border
[KEIKAI-539] - Support Excel 2010 and later file importing and exporting
[KEIKAI-541] - Support a way to re-evaluate a cell's dependents
[KEIKAI-580] - Format cell dialog shows a regional date format upon the current locale
[KEIKAI-618] - Provide a server-side option to add toolbar buttons with dropdown menus
[KEIKAI-635] - import non-English locale formula
[KEIKAI-669] - change default cell style
[KEIKAI-683] - release a jakarta version of Keikai 6.0
[KEIKAI-720] - Keikai list-validation autocomplete
[KEIKAI-738] - open a data validation dropdown with a keyboard
[KEIKAI-739] - reduce the importing time by not evaluating a formula of a named range
[KEIKAI-740] - the validation dropdown shows items based on user input

Improvement
[KEIKAI-732] - Performance improvement: caching RefImpl hashcode
[KEIKAI-733] - Cache results of DecimalFormat from DataFormatter
[KEIKAI-737] - improve importing time for a file with massive formulas
[KEIKAI-755] - Upgrade to POI 5.3.0 version

# 6.0.0
Bug
[KEIKAI-443] - an error cell causes a chart not rendered
[KEIKAI-446] - borders missing above icons in sheetbar
[KEIKAI-544] - Non-generated DOM id in tool bar
[KEIKAI-636] - an external image fails the importing
[KEIKAI-652] - cell value has a very small difference from Excel
[KEIKAI-655] - A chart is still invisible after unhiding columns and rows
[KEIKAI-658] - autofit height and cell wrapped text cause row shrink
[KEIKAI-661] - paste multiple times produces pasting content accumulated
[KEIKAI-662] - removing a trailing space causes a content alert when opening an exported file with Excel
[KEIKAI-663] - Keikai formats a number differently from Excel
[KEIKAI-665] - Only caption is allowed: zul.tab.Tab
[KEIKAI-666] - Add missing two icon fonts in KeikaiIcons for ZK 10
[KEIKAI-668] - Xlsx exporter always set the last sheet as active after KEIKAI-486
[KEIKAI-671] - Excel importer doesn't support absolute relationship paths
[KEIKAI-676] - Array value multiply array value should work as expected
[KEIKAI-678] - cannot accept a boolean value in an array
[KEIKAI-680] - With ZK 10 that enables InaccessibleWidgetBlockService by default causes invisible spreadsheet don't update its value
[KEIKAI-685] - Keikai Match() formula causes class cast exception if searching a double in an array that contains numbers and strings
[KEIKAI-686] - setSheetMaxVisibleRows() and setSheetMaxVisibleColumns() change Spreadsheet maxVisibleRows and maxVisibleColumns
[KEIKAI-690] - generate response for inactive sheets
[KEIKAI-693] - A note without any text (empty string) causes NPE during import
[KEIKAI-695] - typing tab while spreadsheet is processing update causes focus to leave sheet
[KEIKAI-696] - cells position don't align to their column headings
[KEIKAI-699] - keikai closes inline editor when switching to another not-loaded sheet
[KEIKAI-700] - The group buttons for columns are not aligned with the columns below
[KEIKAI-701] - switching sheets causes an unexpected scrolling
[KEIKAI-702] - failed to export a Book whose name has a space
[KEIKAI-703] - group control area looks like it's missing a border.
[KEIKAI-704] - display the same cell address of a formula in different colors
[KEIKAI-705] - cannot open a cell's filter dropdown when the cell is selected in a frozen sheet
[KEIKAI-706] - autocomplete member highlighting doesn't match cursor position in formula
[KEIKAI-707] - selecting a formula argument out of argument length causes the last valid argument to still be highlighted
[KEIKAI-708] - undo resizing column width, the header doesn't restore its width
[KEIKAI-710] - a filter lists the wrong values after hiding a column
[KEIKAI-711] - a filter button doesn't show it's applied with some criteria
[KEIKAI-719] - hovering on dropdown menu triggers a tooltip
[KEIKAI-724] - java.lang.ClassNotFoundException: com.google.common.util.concurrent.internal.InternalFutureFailureAcces
[KEIKAI-726] - unprotect() with empty password doesn't work
[KEIKAI-734] - XLOOKUP formula error after import and export

New Feature
[KEIKAI-41] - Resolve a custom function under collaboration mode
[KEIKAI-429] - Select non-adjacent cells with mouse
[KEIKAI-477] - support UNIQUE()
[KEIKAI-571] - Clone a Book
[KEIKAI-579] - Display numbers of of each bar
[KEIKAI-596] - Support group rows and columns
[KEIKAI-626] - Avoid Java reflection API to access other modules for Java 16
[KEIKAI-667] - support the array formula
[KEIKAI-670] - Upgrade or replace ZPOI to latest Apache POI version for support Array Formula
[KEIKAI-672] - Support LINEST formula function
[KEIKAI-673] - Support CELL formula function
[KEIKAI-674] - Support cloneSheet with Value only
[KEIKAI-677] - Update the Java binary-compatible level to Java 11
[KEIKAI-684] - Upgrade to POI 5.2.4
[KEIKAI-688] - Support formula autocomplete and argument hints
[KEIKAI-691] - freeze rows and columns in the middle of a merged cell
[KEIKAI-692] - Support formula syntax highlighting
[KEIKAI-715] - Review Snyk report

Improvement
[KEIKAI-675] - reduce the time of clearing cells referenced by INDEX
[KEIKAI-679] - reduce the time to find dependents
[KEIKAI-681] - add 3rd party dependency vulnerability scan in building process
[KEIKAI-721] - improve the performance of pasting hundreds of cells

Upgrade Notes
 + Drop support for IE
 + Replace the package of "org.zkoss.poi.*" with "org.apach.poi.*" by using POI v5.2.3
 + Add to support 55 Formulas:
    Areas, CEILING.MATH, CEILING.PRECISE, CELL, CONCAT, COVAR, DAVERAGE, DAYS, DCOUNT,
    DCOUNTA, DGET, DMAX, DMIN, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DVAR, DVARP, EDATE,
    FLOOR.MATH, FLOOR.PRECISE, FORECAST, FREQUENCY, IFNA, IFS, INTERCEPT, LINEST, MAXIFS,
    MINIFS, MIRR, NUMBERVALUE, PEARSON, PERCENTILE, PERCENTRANK, PERCENTRANK.EXC,
    PERCENTRANK.INC, SINGLE, STANDARDIZE, STDEV.P, STDEV.S, STDEVA, STDEVP, STDEVPA,
    SWITCH, T.DIST, TEXTJOIN, TIMEVALUE, TRANSPOSE, TREND, UNIQUE, VARA, VARPA, WEEKNUM,
    WORKDAY.INTL, XLOOKUP, and XMATCH

  + The Java binary-compatible level is Java 11 since Keikai 6.0
  + Upgrade org.jsoup to 1.16.2 for fixing vulnerabilities
  + Upgrade org.zkoss.chart to 10.3.3.0 for fixing vulnerabilities

# 5.12.0
Bug
[KEIKAI-235] - an image is deformed after dragging it
[KEIKAI-361] - The bars in win/loss sparkline have different height
[KEIKAI-409] - Can't scroll from the left and top side of the frozen line on iPad
[KEIKAI-494] - Editing usability on tablet device
[KEIKAI-505] - [Mobile] Can't see all available items in the data validation pop-up
[KEIKAI-506] - [Mobile] Can't see all items in the filter pop-up
[KEIKAI-524] - a chart is not completely hidden
[KEIKAI-527] - sparkline is not hidden when its row is hidden
[KEIKAI-531] - cannot parse three double quote
[KEIKAI-553] - no code reads io.keikai.model.default.Exporter.class and io.keikai.model.default.Importer.class
[KEIKAI-556] - cannot display longer custom protection warning text properly
[KEIKAI-581] - throw IllegalArgumentException with locale ee
[KEIKAI-597] - enter texts doesn't work in a formula bar after clicking a chart
[KEIKAI-607] - Disable the filter causes a javascript error
[KEIKAI-627] - keikai moves the selected tab to the right-most position
[KEIKAI-638] - including another jQuery causes color picker not working
[KEIKAI-639] - iText 2.1 security vulnerability
[KEIKAI-640] - keikai closes inline editor when switching to another not-loaded sheet
[KEIKAI-641] - AutoFilter doesn't display its dropdown icon as filtered after applying the 2nd filter
[KEIKAI-644] - keikai doesn't update the selected cell upon clicking under mobile browsers
[KEIKAI-645] - a picture disappears after switching sheets
[KEIKAI-646] - Deleting sheet does not remove Pictures
[KEIKAI-647] - Cannot delete a picture through API
[KEIKAI-648] - conditional formatting doesn't update unless other feature update nearby cells
[KEIKAI-649] - Remove outdated GA data
[KEIKAI-654] - show a formula instead of result when referencing another sheet
[KEIKAI-656] - selecting a sheet opens the edit box

New Feature
[KEIKAI-331] - support function COUNTIFS
[KEIKAI-496] - Provide API to change anchored objects (picture, etc) anchor behavior
[KEIKAI-563] - Support custom auto-filter "display value" preset in popup instead of actual value
[KEIKAI-598] - clicking a cell on a touchpad can select the cell
[KEIKAI-602] - double-clicking a cell on a touchpad can edit the cell
[KEIKAI-650] - Load a license file from an executable WAR
[KEIKAI-653] - click once on a spreadsheet without a focus to select a cell

# 5.11.0
Bug
[KEIKAI-460] - Missing API getter for _showContextMenu on spreadsheet
[KEIKAI-551] - improve the performance when editing a cell
[KEIKAI-555] - the column width cannot accommodate its text
[KEIKAI-558] - some toolbar button and dropdown are still disabled after unprotecting sheets
[KEIKAI-560] - can't paste cells into keikai with Safari
[KEIKAI-595] - Chart can't handle error values gracefully
[KEIKAI-600] - Multiple row height reduction in the same command cause JS error
[KEIKAI-601] - cell texts are missing after freezing
[KEIKAI-603] - copy-paste doesn't keep number format for unlocked cells under sheet protection
[KEIKAI-604] - unprotect a sheet with a different password
[KEIKAI-608] - Excel sheet with wrapping text and auto-height rows can cause missing rows if user scrolls during rendering
[KEIKAI-609] - Keikai formats a number differently from Excel
[KEIKAI-610] - insert a column into a merged cell causes a javascript error
[KEIKAI-611] - insert a column causes an exception in firefox
[KEIKAI-612] - delete a column causes a nullpointerexception
[KEIKAI-613] - ROUND() returns a different result from Excel
[KEIKAI-614] - multiple SUMIF() with the same sum range takes longer calculation time
[KEIKAI-615] - Cannot pick a color with a HEX value
[KEIKAI-616] - backspace doesn't work in hex input
[KEIKAI-619] - reversed order of series color on stacked column charts
[KEIKAI-620] - switching sheets quickly produces a javascript error
[KEIKAI-622] - Frozen top cause missing row and header data when switching sheets
[KEIKAI-623] - switching sheets causes a js error, when there is a focus out of the visible range
[KEIKAI-624] - scrolling down causes a js error
[KEIKAI-625] - auto fill produces incorrect formulas when dragging multiple rows at once
[KEIKAI-628] - auto fill produces incorrect formulas when dragging multiple columns at once
[KEIKAI-630] - notify change doesn't work when spreadsheet is never rendered before
[KEIKAI-632] - display a center-aligned text incorrectly
[KEIKAI-637] - security vulnerability in bouncycastle:bcprov-jdk14

New Feature
[KEIKAI-575] - AutoFit for height supports for a horizontal-merged cell
[KEIKAI-582] - Change data range of a chart
[KEIKAI-621] - Text filters support case-insensitive

# 5.10.0
Bug
[KEIKAI-465] - the leading space characters in data number format causes IllegalArgumentException
[KEIKAI-515] - auto fill doesn't keep the number format when dragging twice
[KEIKAI-516] - auto fill doesn't keep number format for unlocked cells under sheet protection
[KEIKAI-518] - Formula dependent update takes unexpectedly long time
[KEIKAI-522] - When scrolling down to the last row, the rendering performance is bad
[KEIKAI-525] - MATCH() with an invalid range will be ignored after exporting
[KEIKAI-528] - modify an existing custom formula, but it shows the formula not the result
[KEIKAI-533] - notifyVisibleAreaChange() causes a javascript error
[KEIKAI-546] - a space character in number format causes java.lang.NullPointerException
[KEIKAI-550] - the exported file with a table contains a format problem
[KEIKAI-557] - incorrect password warning dialog displays the message partially
[KEIKAI-559] - the number of pasting cells is more than the number of copying cells
[KEIKAI-565] - AutoFit for height doesn't produce an enough height
[KEIKAI-568] - copy and paste a conditional formatting and exporting it produces a corrupted file
[KEIKAI-569] - can't select partial text of a cell in firefox
[KEIKAI-570] - a blank cell in a SUMIFS() causes a null pointer exception
[KEIKAI-573] - scrollbar doesn't work when keikai renders itself in an invisible parent DOM
[KEIKAI-574] - avoid calling a heavy-cost method to log
[KEIKAI-576] - switching sheets produces unexpected auto height growing
[KEIKAI-578] - edit a cell takes a unexpectedly long time for a large range conditional formatting
[KEIKAI-583] - Empty xml element in imported file cause NPE
[KEIKAI-585] - paste special does not work as expected
[KEIKAI-586] - failed to show data validation dialog
[KEIKAI-587] - AbstractExcelExporter should nullify Workbook after exporting
[KEIKAI-588] - freeze columns make a cell text disappear
[KEIKAI-589] - freeze columns shifts a merged cell
[KEIKAI-592] - java.io.NotSerializableException on HeaderPositionInfo and ToolbarButton
[KEIKAI-593] - keikai-poi depends on several dependencies with known vulnerabilities
[KEIKAI-594] - java.io.NotSerializableException: io.keikai.model.impl.WorkbookProtectionImpl
[KEIKAI-599] - keikai cannot work with Chrome on iPad
[KEIKAI-605] - arrow key moves selection box in 2 cells once
[KEIKAI-606] - setSelectedSheet() causes a NullPointerException

New Feature
[KEIKAI-562] - Upgrade the underlying Log4J library
[KEIKAI-567] - configure auto filter with case-sensitive or case-insensitive
[KEIKAI-572] - Track cell focus and selected sheet as part of the book model
[KEIKAI-590] - auto-complete the ending parentheses

Upgrade Notes
  + Since ZK 9.5.0, the transitive dependency of slf4j-jdk14 was removed.
    Please choose the desired SLF4J binding instead.

# 5.9.0
Bug
[KEIKAI-324] - sclass attribute doesn't work as designed
[KEIKAI-466] - importing a named range with entire column range takes a long time
[KEIKAI-467] - Validation cause missing display when manually typing the same value already set in the cell
[KEIKAI-475] - INDEX() doesn't return #REF! when receiving a non-existed cell address
[KEIKAI-512] - the exported file with a table contains a format problem
[KEIKAI-513] - should not autofit a column with wrap text cells only
[KEIKAI-514] - should not autofit a column with merged cells
[KEIKAI-517] - remove the error "Can't find class for html:io.keikai.model.impl.html.HtmlExporterFactory"
[KEIKAI-519] - unclear parse error message
[KEIKAI-521] - a named range that references a large range consumes long evaluation time
[KEIKAI-529] - wrap text doesn't increase the row height for a long text
[KEIKAI-532] - creating spreadsheet in a modal window causes scrollbar not working
[KEIKAI-534] - filter a frozen sheet produces some duplicate cells
[KEIKAI-536] - a cell having a formula with "wrap text" doesn't resize its row height
[KEIKAI-538] - dynamically filled cells with wrap text doesn't auto resize the row height
[KEIKAI-540] - can't parse dd/mm/yyyy in Italy locale with java 9 or above
[KEIKAI-542] - a cell with wrap text contains a formula doesn't resize its row height
[KEIKAI-543] - wrap text doesn't auto resize the row height when set max visible row
[KEIKAI-547] - inconsistent range error
[KEIKAI-552] - Press PageUp when focusing A1 should not scroll up
[KEIKAI-554] - AutoFit for width produces more space for more characters
[KEIKAI-561] - row height becomes higher than expected after switching sheets
[KEIKAI-564] - wrap text in a merged cell increase its row height unexpectedly
[KEIKAI-566] - change row height with wrap texts unexpectedly

New Feature
[KEIKAI-469] - Implement automin and automax for conditional formatting
[KEIKAI-526] - add more log for debug for formula evaluation
[KEIKAI-530] - backspace key can clear the cell content
[KEIKAI-535] - support row height autofit

Improvement
[KEIKAI-464] - Excel xml store DataValidation from other sheet in a different xml element, fails to load in keikai

# 5.8.1
New Feature
[KEIKAI-509] - library properties for circular reference can be configured in component scope
[KEIKAI-510] - Export conditional formatting expression rules to an xlsx file

# 5.8.0
Bug
[KEIKAI-323] - Can't resize keikai with Clients.resize()
[KEIKAI-339] - render cells slowly after pasting lots of values
[KEIKAI-435] - change zoom level produces an unexpected scrollbar
[KEIKAI-438] - export a formula with an external reference incorrectly
[KEIKAI-445] - cannot render a plain text comment
[KEIKAI-447] - missing / cut off scrollbars in different browsers
[KEIKAI-452] - Fail to import xls saved by Excel 2016
[KEIKAI-455] - an invalid cell reference cause the rendering and exporting failed
[KEIKAI-456] - Missing right borders in the top frozen area
[KEIKAI-457] - evaluating IF() produces a NullPointerException
[KEIKAI-458] - font color filter doesn't work as expected
[KEIKAI-461] - an empty chart causes keikai to stop working
[KEIKAI-462] - improve the performance of formula dependent update
[KEIKAI-468] - loading a file produces a javascript error Index out of range
[KEIKAI-470] - change a percentage cell value but the value in the formula bar doesn't change accordingly
[KEIKAI-471] - IFERROR returns incorrect value when referencing a cell
[KEIKAI-472] - Clear Filter should be in disabled style when no criteria are selected
[KEIKAI-476] - ISNUMBER returns FALSE for non-number result
[KEIKAI-479] - SUMPRODUCT() in IF() doesn't return the expected result
[KEIKAI-484] - import shared formulas incorrectly
[KEIKAI-485] - a formula with nested colon operator causes a FormulaParseException
[KEIKAI-486] - export a hidden sheet as a visible sheet
[KEIKAI-487] - sheet protection password is lost after exporting
[KEIKAI-488] - row height changes after exporting
[KEIKAI-490] - "Empty"  Chart object in sheet cause infinite loop at server-side, frozen page
[KEIKAI-491] - clear filter is not disabled
[KEIKAI-492] - rendering a chart throws null pointer exception
[KEIKAI-493] - Fail to filter by color on an ipad
[KEIKAI-495] - [demo: Excel Like] spreadsheet will break when insert/delete columns
[KEIKAI-497] - keikai-jsf calls a non-existed function size()
[KEIKAI-498] - keikai doesn't always send onCellClick on column A
[KEIKAI-499] - The "Unprotect Sheet" is disabled in the exported file
[KEIKAI-500] - unary double minus operator array arg in function transform array into number
[KEIKAI-502] - SUMPRODUCT() doesn't work as the previous version
[KEIKAI-503] - formula bar doesn't show cell value after being visible
[KEIKAI-507] - a merged cell can't show the complete content
[KEIKAI-508] - change a cell value and the height shrinks to one line

New Feature
[KEIKAI-253] - Exported Excel file should keep sheet tab color
[KEIKAI-366] - A filter dropdown shows available items filtered by other enabled filters
[KEIKAI-372] - When focusing a cell, scroll the cell at the first row
[KEIKAI-401] - Sheet keeps the focus even after selecting another sheet
[KEIKAI-439] - support DATEDIF excel function
[KEIKAI-441] - Add a registration option in JAVA for user defined FreeRefFunction
[KEIKAI-444] - Display an empty cell according to each chart's option
[KEIKAI-453] - Supports Circular Reference for Iteration
[KEIKAI-454] - exporter can throw more specific information when exporting fails
[KEIKAI-473] - Display a merged cell across frozen columns
[KEIKAI-489] - import and export "Protect Workbook"

Improvement
[KEIKAI-459] - Exporting massive formulas and named ranges takes a long time

# 5.7.0
Bug
[KEIKAI-387] - cannot scroll a sheet with 2 fingers on touch pad in Safari
[KEIKAI-405] - exported file contains problems about charts
[KEIKAI-415] - Read cell values cause the error result
[KEIKAI-418] - keikai invokes onClipboardPaste listener twice unexpectedly
[KEIKAI-419] - checkbox and radio disappear after clicking under breeze theme
[KEIKAI-422] - freeze panel produces an unexpected blank columns
[KEIKAI-423] - A filter's popup doesn't show up when selecting part of merged cells
[KEIKAI-425] - apply color filter with "no fill" doesn't work as expected
[KEIKAI-426] - vertical scroll disappears after clearing the filter
[KEIKAI-427] - paste cells at unexpected position after reloading a page
[KEIKAI-428] - sheet tab scroll buttons are at wrong position
[KEIKAI-430] - paste a cell from a deleted sheet causes an IllegalStateException
[KEIKAI-431] - color filter should be disabled when there is no criteria available
[KEIKAI-433] - a text overflows its boundary in the filter popup
[KEIKAI-436] - keikai fails to load zssex.wpd in a jsp with zk 9.5.0.2
[KEIKAI-440] - copy and paste cell value wont work on Mac safari
[KEIKAI-442] - Show a non-empty cell as a gap
[KEIKAI-450] - Undesired blank area at scrollbar position

New Feature
[KEIKAI-376] - Evaluate a named range as a single value
[KEIKAI-395] - conditional formatting can reference a cell from another sheet
[KEIKAI-416] - support column width autofit
[KEIKAI-417] - Render a chart with data from named ranges
[KEIKAI-448] - Support showing mixed-group iconSets in conditional formatting

Improvement
[KEIKAI-420] - improve double converting by a pre-compiled regular expression

# 5.6.1
Bug
[KEIKAI-322] - a wrap text with borders overflows to another cell
[KEIKAI-421] - PMT formula fails when optional parameter is empty
[KEIKAI-424] - import column arrays failed
[KEIKAI-432] - name index overflow during importing
[KEIKAI-434] - cannot render a line chart
[KEIKAI-437] - render a cell's font incorrectly with conditional formatting

# 5.6.0
Bug
[KEIKAI-314] - Importer fails with valid cell names - Edge case cell column too big for int
[KEIKAI-332] - handle exceptions better in PdfExporter
[KEIKAI-363] - click a document type hyperlink doesn't jump to the target cell
[KEIKAI-367] - can't unhide 0px-width columns via header context menu
[KEIKAI-370] - After canceling copy mode, a user still can paste cell text
[KEIKAI-371] - page up and page down don't work as expected
[KEIKAI-374] - legend label should not be a decimal number
[KEIKAI-377] - Can render a sheet for ErrorEval.CIRCULAR_REF_ERROR
[KEIKAI-380] - import a file with a chart causes UI can't be modified in the rendering phase
[KEIKAI-382] - vertical gridlines are misaligned with column header borders
[KEIKAI-383] - pasting an overflow text skips the adjacent blank cell
[KEIKAI-384] - enlarge the formula bar's height and the value inside disappears
[KEIKAI-385] - No scrollbar is available in the formula bar for a multiline text
[KEIKAI-386] - Cannot scroll a frozen sheet when a mouse hovers on the left frozen columns
[KEIKAI-388] - Can't parse 2 double quotes in a formula
[KEIKAI-389] - 2 double quotes cause an ArrayIndexOutOfBoundsException in a specific formula length
[KEIKAI-391] - cannot copy with ctrl+c when the toolbar is hidden
[KEIKAI-394] - a conditional formatting that references to a named range doesn't update
[KEIKAI-398] - features / functions that generate a range of cells are not handled, can cause npe
[KEIKAI-400] - "New Book" toolbarbutton doesn't clear src attribute
[KEIKAI-404] - formulabar-expand button invisible
[KEIKAI-407] - unexpected tAttr error
[KEIKAI-408] - Cell precedent for Table's column header rename in structure reference should not be deemed as a region precedent

New Feature
[KEIKAI-369] - provide a way to iterate cells and treat a merged cell as one iteration
[KEIKAI-378] - support view-only mode under collaboration edit
[KEIKAI-393] - provide a public API to get precedents and dependents of a formula
[KEIKAI-396] - Provide a developer-friendly way to access a cell's precedents and dependents
[KEIKAI-397] - Highlight the dependents / precedents of a cell
[KEIKAI-402] - the importer can be tolerant of new line characters
[KEIKAI-403] - the importer can accept an empty print options

Improvement
[KEIKAI-399] - Render on demand improvement when scrolling screen with page down

# 5.5.0
Bug
[KEIKAI-146] - adding a sheet produces a javascript error
[KEIKAI-271] - Wrong result when merging multiple cells
[KEIKAI-304] - Keikai App - Save As dialog resizes
[KEIKAI-305] - Exported 2007 combo chart has a different Line shape
[KEIKAI-319] - insert at the 1st row of a table doesn't keep consistent row style
[KEIKAI-321] - the corners of filter dropdown icon have extra white background
[KEIKAI-325] - keikai doesn't hide add-row and add-column buttons
[KEIKAI-350] - hiding lots of columns takes a long time
[KEIKAI-351] - delete key doesn't update a conditional format
[KEIKAI-352] - conditional formatting doesn't work after copying a sheet
[KEIKAI-353] - drag to hide columns produces a column without cells
[KEIKAI-354] - set a column's width to 0px doesn't hide a column
[KEIKAI-355] - add row/column icon are at unexpected position
[KEIKAI-356] - the vertical scrollbar overlaps the last visible column content
[KEIKAI-357] - topheadheight doesn't work
[KEIKAI-358] - a sheet with frozen and hidden rows produces an Illegal request
[KEIKAI-359] - Display unexpected chart title
[KEIKAI-360] - cannot disable some functions in a event listener
[KEIKAI-362] - onCellSelection listener blocks pasting (ctrl+v)
[KEIKAI-365] - focusTo() doesn't work in doAfterCompose()
[KEIKAI-368] - Table style did not update after insert row
[KEIKAI-373] - show a hidden formula bar causes a javascript error
[KEIKAI-375] - keikai causes input components to have shadow inside
[KEIKAI-379] - Wrong groupMatchText: 65年JUL月18日, regex mask: ^[ \t]*(19\d\d|[2-9]\d\d\d|\d\d|\d)([A-Z\p{InLatin-1Supplement}]{3,9})([0]?[1-9]|[12][0-9]|3[01])[ \t]*$

New Feature
[KEIKAI-318] - set multiple cell values at once in a row or a column
[KEIKAI-340] - Support AVERAGEIF

Improvement
[KEIKAI-336] - Remove duplicate labels
[KEIKAI-348] - reduce the time to convert a double into Excel precision

# 5.4.0
Bug
[KEIKAI-122] - Fail to edit cells after clicking an in-document hyperlink
[KEIKAI-284] - Named range parsers fails with X0 type ranges names
[KEIKAI-285] - Named range parser fails if using some characters
[KEIKAI-290] - copy 5 cells from Excel produces 5 undoable actions
[KEIKAI-300] - y axis should match the settings in Excel
[KEIKAI-307] - color not applied immediately in frozen area
[KEIKAI-312] - Importer fails with valid cell names - Edge case "\" and similar characters
[KEIKAI-313] - Importer fails with internal external reference
[KEIKAI-315] - Importer fails with valid cell names - Edge case name like cell reference out of sheet limits
[KEIKAI-316] - Importer fails with valid cell names - International characters not supported
[KEIKAI-317] - render an empty sparkline with io.keikai.chart.emptyAsGaps="true"
[KEIKAI-326] - Missing I18N labels
[KEIKAI-327] - Keikai theme contains rules affecting default ZK theme components
[KEIKAI-329] - Including a different jQuery version library causes an error when inserting a comment
[KEIKAI-330] - paste cells exceeding the visible rows makes a sheet shrinks its height
[KEIKAI-333] - a language js causes Unknown widget: zssex.Spreadsheet
[KEIKAI-334] - handle the massive paste error gracefully
[KEIKAI-335] - paste cells from Excel sometimes doesn't work
[KEIKAI-337] - Formula giving incorrect result
[KEIKAI-338] - External Reference not working
[KEIKAI-341] - loading a file produces a javascript error Index out of range
[KEIKAI-342] - Keikai formats a number differently from Excel
[KEIKAI-346] - Fail to import a filtered file

New Feature
[KEIKAI-294] - sparklines can resize according to column width and row height
[KEIKAI-301] - provide an option to move the selection to a different direction after pressing enter key
[KEIKAI-302] - Show zero values as blank cell
[KEIKAI-311] - Support sparklines color for importing and exporting
[KEIKAI-345] - Make default importer easy to extend

Improvement
[KEIKAI-216] - improve filtering performance
[KEIKAI-328] - Replace formula parser

# 5.3.0
Bug
[KEIKAI-182] - Press key in toolbar would enter editing mode
[KEIKAI-202] - Chart 's tooltip display with multiple axis format went wrong
[KEIKAI-218] - chart can't display itself across frozen areas after moving
[KEIKAI-220] - prime faces components can't work with keikai jsf in the same page
[KEIKAI-234] - chart color doesn't match the color in Excel
[KEIKAI-243] - keikai shows incorrect cell value under incorrect number format
[KEIKAI-245] - a page without spreadsheet still loads spreadsheet related javascript
[KEIKAI-255] - Cannot apply font filter
[KEIKAI-267] - Colour Picker
[KEIKAI-270] - undesired New Book tooltip
[KEIKAI-273] - Row height/Wrap text
[KEIKAI-275] - a picture is not displayed after importing
[KEIKAI-276] - Evaluating conditional formatting formulas takes an unexpected long time
[KEIKAI-279] - selection box should not be highlighted when it's on a merged cell
[KEIKAI-283] - Render issue when setting cell values on sheet select
[KEIKAI-286] - [demo] workflow: white cell border
[KEIKAI-287] - [Demo] excel like: file > close NullPointerException
[KEIKAI-288] - incorrect chart axis
[KEIKAI-289] - render a hyperlink as a string
[KEIKAI-292] - color picker renders incorrectly with ZK 9.1.0
[KEIKAI-293] - a line chart in combo chart doesn't update when source cells change
[KEIKAI-295] - Exporting a combo chart, scatter and doughnut are turned to different types
[KEIKAI-296] - a chart without legend should not show a lengend
[KEIKAI-297] - chart title is missing in an exported chart
[KEIKAI-298] - 'updateRowAutoHeight' error
[KEIKAI-299] - Charts are exported to different colors
[KEIKAI-303] - keikai crashed with a hidden toolbar
[KEIKAI-306] - Combo Chart series are not at the right position

New Feature
[KEIKAI-11] - Support combination chart
[KEIKAI-69] - Improve cell style matching time when cloning a sheet
[KEIKAI-208] - Add new font family in the toolbar
[KEIKAI-222] - support double underline
[KEIKAI-277] - Support an option to show blank cells as a gap or zero
[KEIKAI-280] - Show empty label on an axis when its source cell is blank
[KEIKAI-281] - Suport Sparklines

# 5.2.0
Bug
[KEIKAI-156] - font family is not displayed correctly
[KEIKAI-186] - [Demo] clicking a toolbar button, the highlight is unexpected
[KEIKAI-197] - Exported chart missing border
[KEIKAI-198] - Scrollbar display issue after hiding headers
[KEIKAI-199] - Context Menu Layout
[KEIKAI-207] - incorrect table header text color
[KEIKAI-209] - keikai doesn't render the borders of the table
[KEIKAI-210] - render a redundant table row after inserting a row
[KEIKAI-212] - absolute sheet relation paths causing errors
[KEIKAI-213] - users can't find some functions
[KEIKAI-214] - Empty protection element causes NPE during import
[KEIKAI-215] - Freeze panel is not displayed if using hidecolumnhead
[KEIKAI-217] - import cache doesn't work for a date cell
[KEIKAI-219] - keikai style is affected by zk-bootstrap addon
[KEIKAI-221] - insert function dialog contains extra space
[KEIKAI-223] - Format parser doesn't account for currency VND format, parse as date
[KEIKAI-225] - the selection box (focus) moves slowly
[KEIKAI-227] - filter result has an unexpected border
[KEIKAI-228] - an extra property in Array causes Keikai crashed
[KEIKAI-229] - filter submenu exceeds the visible range
[KEIKAI-232] - Copy paste from/to keikai and excel failed on some browsers
[KEIKAI-233] - Undefined error
[KEIKAI-236] - filter icons are affected by zk-bootstrap addon
[KEIKAI-237] - Hard to scroll horizontally sometimes by clicking the scrollbar white area
[KEIKAI-238] - keyboard will jump out when scrolling the screen (not clicking the cell)
[KEIKAI-239] - can't see the cells when the keyboard jumps out
[KEIKAI-240] - Colored currency format is not supported
[KEIKAI-241] - [Demo]: closing data validation window freezes
[KEIKAI-242] - keikai shows a hidden sheet
[KEIKAI-244] - the formula bar is broken by bootstrap css
[KEIKAI-246] - Failed to mount: Unknown widget: zss.Spreadsheet
[KEIKAI-247] - JS error on show/hide toolbar
[KEIKAI-249] - cell border misalign with row header
[KEIKAI-250] - IE11 scrolling issue
[KEIKAI-251] - mouser cursor doesn't become a finger pointer when hovering on the toolbar
[KEIKAI-252] - Dialog display issue
[KEIKAI-254] - Sheet tab border error
[KEIKAI-256] - ipad - font not displayed correctly
[KEIKAI-260] - ipad - return key doesn't work in editing area
[KEIKAI-262] - SUBTOTAL() function_num 109 should exclude hidden cells by a filter
[KEIKAI-263] - SUM() should not exclude hidden cells by a filter
[KEIKAI-264] - Table filter button still appeared when the header was hidden
[KEIKAI-268] - protect message breaks
[KEIKAI-269] - [Demo] thinner cell border when editing cell
New Feature
[KEIKAI-13] - Support iPad
[KEIKAI-64] - Copy cells between books
[KEIKAI-74] - the color of a chart series can follow the color in Excel
[KEIKAI-78] - support tab color
[KEIKAI-169] - Toolbar supports iconSclass
[KEIKAI-224] - auto enlarge filtering range
[KEIKAI-226] - auto enlarge filtering range when enabling auto filter
[KEIKAI-231] - upgrade zkcharts to 7.2.1.0
Improvement
[KEIKAI-151] - Simplify client wgt structure
[KEIKAI-173] - Merge 2 seperate .zsrendering in ss.less and _kk.less
[KEIKAI-174] - Replace deprecated org.zkoss.util.logging.Log
[KEIKAI-203] - [Demo] Integration demo should remove hyperlink in column A
[KEIKAI-230] - Filter causes null pointer exception
[KEIKAI-258] - ipad - the style of filter icon can be improved

# 5.1.0

New Feature
[KEIKAI-38] - copy a cell with multiline text in Excel, paste it as one cell
[KEIKAI-159] - ClipboardPasteEvent.getArea() doesn't return the area a user pastes values to
[KEIKAI-164] - importer can throw more specific information when importing fails
[KEIKAI-170] - improve removeToolbarButton
[KEIKAI-171] - Release configuration
[KEIKAI-172] - keikai spreadsheet XSD supports event attributes
[KEIKAI-177] - Hiding ZK Knowledge from using Keikai JSP tag
[KEIKAI-180] - support public API to get named range list of a sheet
Bug
[KEIKAI-45] - row height changes after input
[KEIKAI-50] - Missing bottom border when filtering
[KEIKAI-51] - Missing cell border after merge
[KEIKAI-66] - edit cells referenced by OFFSET doesn't update the formula result
[KEIKAI-68] - text goes out of the filter dialog
[KEIKAI-72] - Edit cells doesn't work after selecting a sheet
[KEIKAI-73] - a chart has missing y-axis value labels
[KEIKAI-82] - hidden rows cause a chart not displayed
[KEIKAI-88] - zcss.setRule performance too slow when adding a lots
[KEIKAI-108] - PDF export layout issue
[KEIKAI-134] - Filtering cause server down
[KEIKAI-137] - work with DB: button text broken (FF)
[KEIKAI-138] - Wrong result after filtering and coloring
[KEIKAI-149] - IE11: select multiple rows highlights everything
[KEIKAI-150] - IE11: frozen row & column doesn't work correctly
[KEIKAI-153] - right alignment spacing issue
[KEIKAI-157] - arrow keys don't work in safari
[KEIKAI-160] - failed to render dash borders
[KEIKAI-161] - can't delete an image
[KEIKAI-179] - clone a sheet doesn't clone its named range
[KEIKAI-181] - failed to import a cell with string cache
[KEIKAI-183] - selecting a sheet doesn't work for the first time
[KEIKAI-184] - 5.1FL breaks layout
[KEIKAI-185] - [Demo] WorkFlow template border
[KEIKAI-187] - new book button causes toolbar disappeared
[KEIKAI-189] - missing data validation drop-down icon
[KEIKAI-190] - Clear filter does not always work
[KEIKAI-191] - paste a data validation causes an IllegalStateException
[KEIKAI-192] - keikai can't evaluate EOMONTH after upgraded from ZSS
[KEIKAI-195] - observed thick border when hiding headers
[KEIKAI-196] - a row height shrinks unexpectedly
[KEIKAI-201] - evaluate a named range throws IndexOutOfBoundsException