Gnumeric Now Supports All Excel Worksheet Functions
unmadindu writes "The latest beta release of Gnumeric has been released. According the the developers, it is now ready and stable enough for general use and deployment, and the final 1.2.0 release will be made on September 8th. This release also marks the realization of a major milestone -- all of the worksheet functions in the U.S. version of MS Excel are now supported. I have been using 1.1.19 for quite some time now, and it is incredibly fast, and hugely improved compared to Gnumeric 1.0."
New versions of Excel are allways backwards compatible. In the event that something feature would need to be added to the .xls format, old versions of excel - and Gnumeric - would still be able to read everything else.
Sort of like HTML... if a browser encounters a flag it is not familiar with, it just ignores it.
The unofficial
Actually I use the Open-Office spreadsheet quite a bit at work, and can't see any reason to change to be honest. Part of my job involves perl scripts that generate .xls spreadsheet reports at night for users to view the next day and my tests with OO render them exactly the same as the users see them with Excel.
;-)
BTW, the reason we switched to doing this was due to the old system; where Access was running on PCs, and generating reports was so damned slow! It may seem unbelievable, but changing from Access+MySQL (we replicate from our Oracle server for reports and other stuff) to Perl+MySQL on Linux resulted in a staggering increase in speed. Reports that were taking an hour are now completed in under 2 minutes! The method I use to convert from Access->perl is, firstly take the Pseudo-SQL Access generates, then customise it a bit for MySQL, then use the Spreadsheet::WriteExcel module for perl. It's great!
I've never used Access myself BTW, and don't really understand what the hell it's doing to use all the CPU cycles. We watched it's activity one day - it ran a query on the Linux box, which took 12 seconds (monitored it with "top"), it then pegged the Windows PC - a P4 2.4ghz - running Access at 100% load for a good 20 minutes generating a spreadsheet!! WTF?!
So, to anyone else suffering with slow Access reports, learn some perl
Code, Hardware, stuff like that.
One way to make things go a little faster when using Access to drive Excel is to set an Excel.Range object equal to the upper left corner cell where you want data, and then CopyFromRecordset.
That assumes you've got things the way you want them in your SQL SELECT clause. If you need to tap every Recordset field prior to writing to a cell, one hopes your data are few.
Keeping this remotely on topic, are the various GNUmeric programming interfaces comparable to that beloved language, VBA?
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
Its a question of resource allocation. For any time we spend polishing our xls import export we get access to the installed base of MS Office. Whereas time spent on OOo's formats yields a much smaller number. Given more resources we'd spend more time on it, but for now I threw together an importer in a couple of weekends, and have only received one bug report in 6 months. given the documentation for the OOo format, and more importantly the existance of readable code that impliments it, it would be a simple project for someone to improve our support.
It varies. We have a fairly extensive test suite that tries to keep us compatible with MS Excel for the most part. When a discrepancy appears there are 3 possibilities
1) Gnumeric bug which we fix.
2) Better precision in Gnumeric. This is fine. People tend to prefer the right answers when they can be convinced that XL was being silly. eg our VAR, HYPERGEOM, and various financial routines.
3) There is a bug in XL. This is a royal pain in the butt.
We end up with 2 functions. The XL 'FOO' that attempts to be bug compatibile, and a fixed G_FOO. We don't get a choice here. People tend to freak out if their imported spreadsheet starts to produce different results. Hopefully in time they can be convinced to use the G_ variants by default.
However, this is definitely an area we take very seriously. The Gnumeric project has received a grant to produce a test suite for open source spreadsheets. I'll announce more details shortly.
Soon.
This is something I've been working towards for a while now. It will hopefully happen some time early in the 1.3 development cycle. Having a win32 build (and ideally an osx build too) is a very important for the next stage of migration. People migrating to linux will use an app that is compatible, but they're alot more likely to be allowed to use it by central management if it will run on windows too. This is one of the key difference between abiword and Gnumeric. Their community has been bolstered alot by the infusion of windows users and developers.
If anyone is interested in helping with this its largely just a build monkey issue. The underlying libraries are available for win32 (the gtk stack). All we're lacking is someone with the time to patch the last of the build problems, and point out any lingering non portable calls.
We support wk1, and wk2. There are some specs available for newer versions but I haven't had time to do more work on it. This sort of development is very parallizable. The i/o plugins are completely modular, so if anyone is interested in a new or esoteric format its not at all difficult to get something in place.
If anyone is interested please contact me.
True, this has been a sticking point for our scripting support. We have not wanted to commmit to a scripting interface that would not allow VBA to be used out of the box. There are several issues with that
1) security.
There is absolutely no way in hell that we'll allow vba to run without some sort of sandbox and user intervention to explicitly enable the macros. This will definitely make life more difficult, but perpetuating the nightmare of vba viruses in office docs seems like a terrible idea.
2) Reading and writing the macros. Unlike xls, the vba streams have no public documentation as far as I know. The anti-virus folk appear to have some under various NDAs but I have not seen enough to get a good handle on things. OO and gnumeric can both extract the compressed source code out of the vba streams, but neither of us has a good way of ensuring that will work.
3) In an ideal world we'd be able to extract the p-code rather than the vba source code. That will enable a simple mapping from vba to a more more opensource friendly language like python. The precompiled p-code would remove the need to parse actual vba.
4) If we're actually forced to use VBA, I'm hoping the mono's vb support will be viable as a fall back.
However, even if we find the file format, and we have an interpretter. Supporting it will require a gnumeric scripting api that supports the entire XL api. A large and daunting task. We'll do something smaller and cleaner first, likely based on our experiments in python. To date we've avoided blessing any scripting api because we don't want to offer one api then pull the rug out from under people and change it. An API needs to be stable to be useful. This is high on our list of projects for 1.3.
I made the claim as clear as possible, and belive it is true.
We can accurately reproduce results from every function in the US version of MS Excel.
We'd don't do quite as well comparing evalation techniques, although we're well ahead of OOo in that regard. 1.0.x had support for
- iterative evaluation
- implicit intersection
- and implicit type conversion
In 1.1.x we've added
- dynamic dependencies (eg OFFSET, or INDEX)
- constructed ranges (A1:INDEX(...))
- and support for implicit iteration for function arguments
That last one is the sole remaining issue as far as I know. I need to finish off support for implicit iteration for operators. Hard to say if it will go in for 1.2.0, probably not (although I've got it partially done), so it will likely wait until 1.3