Getting the basics out of way, in theory, KSpread supports sheets upto 32767 rows by 32767 columns and can place several sheets in one workbook. Cell formatting is extensive with all manner of text wrapping, borders and rotation supported. Like most other KOffice applications multiple levels of undo/redo are present.
Entering data is fairly smooth, auto completion is enabled within a column and ranges can be extended. This works for non-numeric values such as the names of days and months. Conditional cell formatting is implemented with up-to three conditions allowed.
I'm not a great spreadsheet user so the things I miss are usability tweaks such as colour-coding cells referred to by a formula, OpenCalc but not Gnumeric supports this. KSpread's handling of large spreadsheets is poor, it is not possible to perform some operations, such as sorting, on entire columns. This is irritating as you have to select the cells manually rather than selecting the entire column with a single click. Thankfully, formatting operations do work with entire rows or columns.
Lots of user interface tweaks such as the ability to select cells visually from within dialog boxes are missing. This extends to familiar keyboard shortcuts, for example Shift + TAB to move left. Another limitation is support for different currency types appears broken. Nor is there a facility to copy a sheet or move it to another workbook.
The user interface does have some good touches. Comments can be assigned to cells, and cells containing formulas have a blue marker in the corner for easy reference. A quick calc feature on the status bar shows the sum, minimum, maximum or count of the currently selected cells.
KSpread supports cell validation so you can filter data as it is entered into cells and reject inappropriate values, the error messages are customisable so you can make user-friendly templates.
Cell protection is offered on a per-cell basis but I could not find a way of enabling it. Entire worksheets can be made read-only, requiring a password to unprotect.
There are 313 functions, a big improvement on the previous version, covering engineering, financial and statistical domains and a useful function browser that provides on-line help for every one of them. There is also a facility to insert a geometric or linear series.
If you make a mistake when entering a formula don't expect any more help than "#Parse!" error message.
Other features include the ability to insert subtotals, consolidate data and simple goal seek functionality. As in KWord formatting can be managed using styles and there's even a limited AutoFormat tool. Laying out your spreadsheet for paper is easy with a quick option to display the page boundaries.
There is a menu option to import external data from either a text file or a database; unfortunately my system does not have the appropriate database drivers compiled so I wasn't able to use this feature.
Besides performing calculations many spreadsheet users want to ability to create to charts. At first things look promising. KChart supports many different types of chart including: line, bar, area, pie, ring, polar, hi-lo close and "box and whisker" diagrams. A wizard guides you through the various types and formatting options. Charts have to be embedded in a sheet and cannot be placed in a separate worksheet. However, you can print them individually.
Every aspect of the chart formatting seems to be customisable. When run as a separate application editing data is a snap, you just enter it into a table. When used with KSpread the data comes from the spreadsheet and you have no control over it.
The feature does not work. I tried creating a simple bar chart with based on two columns of information, the first containing names of animals and the second a number between one and ten. I wanted a bar chart showing how many animals of each type. KChart produced a 3D bar chart with the names of the animals on the X-axis as I wanted. The Y-axis has a scale of 0 to 9 but the height of the bars, whether displayed in 2D or 3D, was completely wrong. None of them was higher than 1 on the Y-axis although the heights did vary. Curiously when I increased the value of one row to 50 the Y-axis correctly rescaled.