Issues resolved in SpreadsheetGear 2009 include:
- Fixed bug in bar chart data label layout which caused labels to be positioned on the wrong side of the axis on bars with the same y1 and y2 positions.
- Fixed issues which caused exceptions when painting or laying out charts which have a width or height of zero.
- Fixed issues with chart data point and data label formatting not being read from Open XML (xlsx) correctly with certain workbooks.
- Fixed category axes to wrap on hyphen characters similar to Excel.
- Fixed bar chart data label manual layout offsets to work correctly on reversed axes.
- Fixed textbox and comment to no longer allow editing with the keyboard when the "lock text" flag is set and "locked" is not set.
- Fixed chart placement issues when the WorkbookView area is smaller than size of a default chart.
- Fixed mouse handling to be less sensitive so that a simple click or double click on a shape or chart is less likely to inadvertently move the shape or chart.
- Fixed row and column mouse resizing logic to allow for unhiding hidden rows and columns at the bottom or right edge of the display area.
- Fixed legend and data label text to render more like Excel when linked to empty cell values.
- Fixed Range, Chart and Shape Explorers to select a better default panel when they are displayed without all panels visible.
- Fixed legend entry rendering order to work like Excel on stacked charts and horizontal bars.
- Fixed IOutline.ShowLevels(int rowLevels, int columnLevels) to correctly remember the collapsed and expanded state of each group so that expanding in the future will work as expected.
- Fixed issues when right-clicking an existing range selection when a WorkbookView has frozen panes.
- Fixed a number of issues related to Excel 97-2003 (xls) and Excel 2007 (xlsx) file format compatibility.
- Fixed issues when scaling chart axes with very large and very small values.
- Fixed chart series to be plotted on a visible axis if the axis the series is set to be plotted on is hidden.
- Fixed auto series marker sizes to be based on the weight of series lines.
- Fixed scroll position issues with frozen panes after freezing, removing split, and then freezing at same cell again.
- Fixed new textboxes to default to a solid fill.
- Fixed entering of some special case values such as “5 1/8%” to work as Excel does.
- Fixed some cases where a cell with overflowing text which is not currently in view, but whose text overflows into the current view, does not repaint correctly when the cell is modified.
- Fixed some calculation problems which occurred in certain cases when a single workbook set contains multiple workbooks with different IWorkbook.Date1904 settings.
- Fixed a problem with the built-in fraction custom number formats "# ?/?" and "# ??/??" which occurred with certain CultureInfos.
- Fixed the IRange.Replace(…) method to fire a RangeChanged event on the range of cells actually modified.
- Fixed some number formats, such as “+0”, to display like Excel instead of adding a backslash before certain characters (SpreadsheetGear 2008 displayed this as “\+0”). This only affects the number format, not the actual formatted text for a cell.
- Fixed some problems with reading and writing text objects.
- Fixed the FormulaBar and the IRange.Entry property to display the underlying number instead of an empty string if a date / time cell contains an invalid date / time.
- Fixed dependant cells to calculate correctly after sorting.
- Fixed some problems with cell selections and with the Range / Chart / Shape Explorers which occurred when background threads were acquiring locks and making changes to a workbook while the user was interacting with the workbook in the WorkbookView or explorers.
- Fixed problems reading workbooks which have conditional formats and data validation formulas with range / union / intersection operators.
- Fixed the IRange.Value property so that setting it to an instance of System.DateTime will format the cell with an appropriate date / time number format if the cell does not already have a date / time number format.
- Fixed a problem which caused Excel 2007 to sometimes be unable to read a workbook after copying cells which reference a workbook global defined name between different workbook sets.
- Fixed issues with mouse selections of an entire row or column where the row or column has merged cells.
- Fixed the line from a comment to the cell containing the comment to paint correctly when the comment and the cell it belongs to are not both displayed in the current view.
- Fixed some issues with scrollbars which were particularly apparent with wide columns or tall rows.
- Fixed a problem with the HYPERLINK function which caused an exception to be thrown in some cases when the cell containing the HYPERLINK function was clicked.
- Fixed SpreadsheetGear.Drawing.Image to take the scale (zoom) into account when rendering a single shape (5.0.3.108).
- Fixed issues with editing when edit is ended or objects have been disposed during the EndEdit or CancelEdit process (5.0.3.108).
- Fixed the behavior of data validation lists where an item in the list is a blank cell or an empty string and IgnoreBlanks is true to work more like Excel (5.0.3.108).
- Fixed issue when setting the plot area bounds from the API after reading workbooks with "inner" manual plot layout (5.0.3.108).
- Fixed issues with rotated numbers when shrinking and filling with "#" when too large for cell (5.0.3.108).
- Fixed to support newline characters in number formats in cells (5.0.3.108).
- Fixed writing of Excel 97-2003 (xls) workbooks to write the protect objects and protect scenarios records in addition to the protect worksheet record as Excel does. This fixes a problem which caused shapes and charts to be editable in Excel if you saved a workbook with locked shapes or charts on a protected worksheet to the xls file format (5.0.3.108).
- Fixed a problem which caused IRange.EndUp and IRange.EndLeft to sometimes skip the last cell in a column or the last cell in a row (5.0.3.110).
- Fixed a problem which caused the order of workbooks in the IWorkbook.Worksheets collection to be incorrect after calling ISheet.MoveBefore or MoveAfter (the IWorkbook.Sheets collection did not have this problem) (5.0.3.112).
- Fixed a calculation problem which could sometimes occur when a workbook which references another workbook is loaded and calculated before the referenced workbook, and then the referenced workbook is loaded into the same workbook set and changed, where the changes in the referenced workbook were sometimes not reflected in the referring workbook (5.0.3.112).
- Fixed a problem which caused Excel 2007 to write xls workbooks with invalid formulas after Excel 2007 had read certain workbooks which had been written by SpreadsheetGear. The workbooks were fine when initially read by Excel 2007 - they were corrupted by Excel 2007 when they were written back out to xls (5.0.3.116).
- Fixed copying data source and title formulas in charts as part of copying an entire worksheet, where the data source or title formula refers to a worksheet specific defined name, to work more like Excel 2007 (the chart will refer to a worksheet specific defined name in the new worksheet instead of in the source worksheet) (5.1.1.106).
- Fixed a number of edge case problems with the new Analysis Toolpak functions (5.1.1.106).
- Fixed printing of borders to no longer print cell borders hanging over from other pages (5.1.1.106).
- Fixed the SpreadsheetGear.Drawing.Image class to work with charts on chart sheets (5.1.1.106).
- Added APIs and changed the Chart Explorer to display axis and chart title formulas when linked to worksheets instead of simply displaying the values of those formulas (5.1.1.106).
- Fixed the selection code to show as much of the range selection as possible instead of just the active cell (5.1.1.106).
- Fixed a problem which caused SpreadsheetGear to write invalid conditional format records to xls workbooks in cases where a large number of non-adjacent areas contain the same conditional format (5.1.1.106).
- Fixed handling of #N/A as chart data values to be more compatible with Excel (5.1.1.106).
- Fixed trying to open a Word document (.doc) to throw an IOException instead of a NullReferenceException (5.1.1.106).
- Fixed a problem reading certain charts with out of date chart data cache records (5.1.1.106).
- Fixed a NullReferenceException which occurred in the color picker when the "More Colors..." button is pressed with no currently selected color (5.1.1.106).
- Fixed problems with AND and OR worksheet functions which sometimes caused errors in the second and subsequent conditions to be ignored (5.1.1.110).
- Optimized the SUMIF function to efficiently skip non-existent rows when possible resulting in significant performance improvements for some workbooks which use SUMIF on entire columns where not all rows are populated (5.1.1.114).
- Fixed a problem with the TRUNC function when used in certain array formulas (5.1.1.114).
- Fixed a problem which caused certain array formulas to return an incorrect value after copying array formulas within the same worksheet (5.1.1.118).
- Fixed a problem with the IRange.Table API which occurred for some cases where a row input cell and a column input cell are both specified (5.1.1.118).
- Fixed print header and footer fonts to scale the same as page fonts are scaled (5.1.1.118).
- Improved the rendering of lines in line charts by using round line caps and joins rather than flat line caps and joins (5.1.1.118).
- Fixed to support defined names which contain question mark ('?') characters after the first character as Excel does (5.1.1.118).
- Changed the ShapeActionEventArgs.Control property to return a reference to the Windows Forms TextBox control responsible for editing a textbox shape or cell comment during a ShapeActionEventType.TextChanged event (5.1.1.118).
- Improved value axis scaling to work more like Excel 2007 particularly for large values which are close together (5.1.1.122).
- Fixed a problem with parsing of complex formulas which used the INDIRECT, OFFSET or INDEX functions in defined names, where the parsed formula would return the incorrect result because arguments to the functions were treated as array class arguments rather than value or reference class arguments (5.1.1.122).
- Changed parsing of number formats to accept spaces ('\u0020') as thousands separators when the workbook set's CultureInfo thousands separator is '\u00A0', and to format numbers with a space ('\u0020') rather than '\u00A0' when '\u00A0' is the thousands separator as Excel does. SpreadsheetGear will continue to accept number formats with '\u00A0' as the thousands separator when the CultureInfo thousands separator is '\u00A0', but formatted numbers will always use space ('\0020') (5.1.1.122).
- Fixed copying cell formats with palette indexed font, interior and border colors to convert the palette indexed colors to RGB colors when the source and destination palettes have different colors at the referenced palette index (5.1.1.122).
- Fixed dependant cells to calculate correctly after sorting (5.1.1.128).
- Fixed form controls to only set focus back to the WorkbookView when the control itself is used interactively to change values (5.1.1.128).
- Fixed a problem which sometimes caused formulas to not be calculated as needed after changing a defined name from referencing an unloaded workbook to referencing a loaded workbook (5.1.1.128).
- Fixed AutoFill mouse handling to honor the WorkbookView.AllowEditCommands property (5.1.1.128).
- Fixed the OFFSET function to use the height / width of the specified range instead of 1 when used with a missing argument for the optional height / width arguments, i.e., OFFSET(A1:C3,0,0,,2) or OFFSET(A1:C3,0,0,2,) (5.1.1.128).
- Fixed a problem with the INDEX and OFFSET functions not correctly handling error conditions in some of their arguments. This problem could lead to a formula cell being incorrectly treated as a circular reference cell in some rare cases (5.1.1.132).
- Fixed a problem with the EDATE function which caused #NUM! to be incorrectly returned for a number of valid cases (5.1.1.136).
- Fixed problems reading / writing shapes of type ShapeType.Line from / to the Open XML (xlsx) file format (5.1.1.142).
- Implemented work around for .NET print dialog issue on 64 bit Windows by setting PrintDlg.UseEXDialog to true if IntPtr.Size > 4 (5.1.1.142).
- Fixed reading and writing shapes to Open XML to support the IShape.HorizontalFlip and IShape.VerticalFlip properties (5.1.1.146).
- Fixed a problem which caused SpreadsheetGear to write an invalid data validation record to the Excel 97-2003 file format after reading an Open XML workbook with a data validation rule which contained a comma separated list as the criteria (5.1.1.146).
- Fixed a problem which incorrectly allowed cells to be deleted when the shifting of cells below or to the right of the deleted cells would leave invalid merged cells or invalid array formulas (5.1.1.150).
- Fixed a problem which caused incorrect results from some workbooks containing formulas involving defined names, where the defined names contained formulas which referenced other defined names which contained complex formulas (5.1.1.150).
- Fixed setting IRange.Value and IRange.Formula where a cell is currently formatted with a simple number format (such as "#,##0") to not change the format of the cell when a value such as "1/1/2009" or "5%" is entered. This change was made to be more compatible with Excel which treats these simple number formats differently than any other type of format (5.1.1.154).
- Fixed HLOOKUP and VLOOKUP to return an error as Excel does if the number of rows in the range being searched has one column in the case of VLOOKUP, or one row in the case of HLOOKUP, and an index greater than one is specified (5.1.1.160).
- Fixed a problem copying some shapes when copying worksheets which were opened from Open XML workbooks (5.1.1.164).
- Fixed a problem with parsing and unparsing of formulas containing array constants such as "=SUM({1,2;3,4})" when using a CultureInfo where the decimal separator is a comma, so that SpreadsheetGear now uses a backslash rather than a comma for the array constant column separator as Excel does, yielding a formula such as "=SUM({1\2;3\4})" (5.1.1.164).
- Fixed the INDIRECT function to be more compatible with Excel, including fixing a problem which kept it from working with valid references with single quotes such as "'[MyBook.xlsx]MySheet'!A1" (5.1.1.168).
- Fixed number formatting to properly format numbers using the engineering number format variation of scientific number formats including number formats such as ##0.0E+00 (5.1.1.168).
- Fixed to be able to read workbooks which use single quotes in table column names to escape square braces (5.1.1.172).
- Fixed a problem which caused charts to sometimes not be repainted after changes to certain axis properties (5.1.1.176).
- Fixed a problem which caused data validation using a list to fail to properly link the listbox to the cell being validated if the workbook set is using ReferenceStyle.R1C1 (5.1.1.176).
- Fixed a problem which caused some gradient fills to be interpreted incorrectly when reading them from xls workbooks (5.1.1.176).
- Added a workaround to read xls workbooks written by a popular 3rd party grid control which contain invalid cell formatting information (5.1.1.180).
- Fixed a problem which caused external links to fail in some cases where the workbook names matched but the full paths did not match (5.1.1.180).
- Fixed the WORKDAY function to return the correct result when the specified start day falls on a weekend or holiday (5.1.1.182).
- Fixed a bug in the DATEVALUE function which caused #VALUE! to be returned in some cases when the argument to DATEVALUE is a defined name reference (5.1.1.182).
- Fixed a problem with IRange.Copy which caused SpreadsheetGear to hang or throw an exception with certain combinations of source and destination ranges where the source range and destination range have columns with no values and no cell formats (5.1.1.1.186).
- Fixed a problem which caused cells to sometimes not be calculated in the correct order with workbooks where cells are involved in a circular reference during one calculation, and later are not involved in a circular reference because of dynamic re-ordering of calculations due to the use of functions such as IF, CHOOSE, INDIRECT, etc... (5.1.1.190).
- Fixed a painting issue which occurred when rendering certain ranges with row headers, column headers and gridlines all turned off (5.1.1.194).