We are having problems with RExcel and I am trying to find alternatives. Our users like to use Excel and our developers like to do stats in R. So, we use Excel as a front end for data entry, analyze in R, and present results in Excel.
Because of the problems we are having with RExcel, however, I would really like to have a different solution. Assuming that we cannot remove Excel or R from the equation, are there other ways of connecting them besides RExcel? My searching on the internet has not been helpful.
[edit]
I've been asked to phrase this as a problem that SO can solve. I need to take data input in Excel, pass it to R, and get data back. RExcel is not allowed and the transfer needs to be transparent to the user. How do I do this?
Perhaps such an alternative is writing functions for Excel in C# with ExcelDNA and R.Net libraries.
Some info:
https://github.com/Excel-DNA/Samples/tree/master/UsingRDotNet
How to get ExcelDNA work with R.Net
Related
Hi guys,
I'm trying to push data from an excel file to a google spreadsheet, using VBA
User Story : When my user close excel, it automatically pushes the data into a back up on google sheet.
I've read some solutions about the Google API, but i do not understand how to use it.
if someone has an explanation it would be nice
Regards,
Thomas
Mixing Excel and Google is going to be a tough journey. They have a lot of compatible features and implementations and then a whole bunch of things that are just not compatible.
You won't be able to control what your users do in Excel so the "backup" may end up as a poor representation of the excel version.
If it is purely for backup, you could go the MSFT route and use OneDrive/O365 which keeps versions for you if you store in a local OneDrive. You can use auto save to keep your backup up to date.
You could go the google route by using sheets on the desktop browser.
As Thomas suggested, go with an off the shelf sync tool if the data and format is straight forward. I have had very mixed results for even some simple stuff.
Not wishing to start a tech-religion war by recommending one over the other but how you are trying to achieve this feels fraught with risk and may be hard to future-proof.
HTH.
So I am terrible with excel and my current job requires me to comb through a ton of data. Here's what I am trying to do... I have about 40 pages of data in an excel sheet - it contains about 200 different programs and what each is capable of doing. Then, I have a separate list of people's problems that our programs may be able to help solve. Both lists are written in paragraph format in a word doc, but I have moved it to excel.
I am trying to figure out a way to match just the name of the program to just the title of the problem, by searching/comparing the description of the problem with the description of our program. In the past, doing this manually has taken nearly 80 manhours and it just seems like a waste.
Is there even a way to do this?
How difficult would it be for an excel novice to do, seeing as it's on a standalone system - where I can't copy/paste here?
Thanks in advance for any help/advice. I tried to include examples.
Customer problem
Potential solution
How to read excel(2007+ xlsx) sheet using actionscript(AIR)?
as3xls
An Actionscript 3 library for reading and writing Excel files. Currently reading numbers, text, and formulas from Excel version 2.0-2003 and writing numbers, text, and dates to Excel 2.0 is supported. No server-side help is needed.
SUPPORT INFORMATION
Documentation and samples are at http://code.google.com/p/as3xls/
I wrote this: https://github.com/childoftv/as3-xlsx-reader I'd love to know if it helps
Do you have any idea how... Inefficient this is?
Excel uses a complex setup for files, and unless you want to write a full-scale parser for its spreadsheets (which, believe me, will be difficult, alone to figure out what the format chars do), you'd be better off finding another solution.
Say, using a "save to XML" option would make your job a few thousand times easier, without exaggeration. AS3 has no native support for Excel, there is no real point for it to have such. But it has great integrated methods for working with XML.
If possible, save the Excel files to XML and parse those.
Better still, use databases, and parse them as XML through PHP.
I did a search and came up with this: http://code.google.com/p/php-excel-reader/
Once you've got it in PHP, passing it on to Flash is no problem at all. I'd recommend turning it into straight arrays of objects and converting it to AMF3 via Zend_Amf, AMFPHP or WebOrb, whichever one you're most comfortable with. You can then create tables, manipulate the data or whatever you like. It'd also be a lot faster and lighter than using XML.
PK
I took a look at the xlsx breakdown and it would take me 1 week to write an xlsx writer that could do basic formatting and formulas. I've only spent 1 hour perusing through the directories in an xlsx file and all you'd have to do is create the same directory structure...mostly cut and paste some strings..and then zip it and call it xlsx.
I tried this theory by manually making an xlsx file using 7zip. I downloaded childoftv's reader and, though I don't need the reader, the package includes a few zip/unzip classes that would prove helpful for anyone who wants to make a xlsx writer.
Long story short, the setup isn't complex, somebody just has to take a week out of their busy schedule to do it. I need this functionality so if nobody's done it yet, then I'll have to. Hopefully my search will find something better than a forum where the general consensus is "it's too hard, give up."
We have a lot of reports that are generated via VBA & Excel. Only a small percentage of the reports are actual calculations - the majority of the work is sql calls and formatting/writing of cells. The longest of which takes several hours, the majority takes around 20-30 mins each.
The VBA/Excel code plugs into a dll that the VB6 desktop apps use - it's here that all the sql calls are made. While I am sure that there is room for improvement here, it's not this that concerns me - the desktop apps are fairly snappy.
Two VBA functions are used in abundance: These are called GetRange and SetupCell and they nearly always appear together. The GetRange function is a wrapper for the Excel.Range object. It takes a sheet, and 4 values for the extents of the range. Its main use is to pick the cell for editing. There doesn't appear to be much chance of optmising it, but is it the best way?
Its partner is SetupCell. This takes a Excel.Range object, text and a dozen parameters about the cell (font, borders, etc). Most of these parameters are optional booleans but again, it seems very wasteful. Some of these can be set posthumously but some are dependant on the values contained in the cell.
There's quite a lot of code contained in these functions, mainly if statements and work won't appreciate me posting it.
I guess I've got two questions: Is there a better way and what is it and is there are free profiler that I can use to see if the bulk of the time is here or in the dll?
several hours is ridiculous for a report.
If the problem is VBA buy "Professional Excel Development" (stephen Bullen, Rob Bovey et al): this has a free VBA profiler called PerfMon.
If the problem is Excel Calculation see http://msdn.microsoft.com/en-us/library/aa730921.aspx?ppud=4
But I would guess that the problem is the high overhead associated with referencing things cell-by-cell: you should always work in large blocks of cells at a time.
Have you thought about using an actual reporting solution? What's your backend db? If you are using MSSQL 2000 or higher there is a fairly decent reporting solution you can use free of charge. SQL Server Reporting Services.
It sounds as if the reports are spending most of their time formatting cells. This could be why the reports seem so slow and the desktop app doesn't.
Alternatively, if you know the formatting before hand and it is fairly static, you could pre-format the sheets to cut down on some of the work.
I will throw this in there as well. Most reporting solutions will allow for conditional formatting and such, but since they are designed to work as such performance will be much better than having Excel do it.
This isn't a profiler recommendation, but it is a suggestion for speeding up Excel macros that are spending their time updating the screen. I've had excellent results by turning off screen updating while the macro is running: set Application.ScreenUpdating= False, and also using a number of other similar settings. Just be sure to turn them back on again when the macro finishes :P
It's not free but you can profile with this. I suspect the demo will be adequate to your needs: http://www.aivosto.com/vbwatch.html
It sounds like the VBA code (or the VB code that's writing to the sheets) is doing so line by line, this can take ages, and is poor design. Write to Excel as a variant in one go. Format the sheet after the data is all imported.
Thanks
Ross
Our company has a reporting solution utilizing Analysis services + Reporting Services, with excel reports being a priority. Everything's sort of fine, but several annoying things are bothering us:
No ability to rename the sheets
Embedded images stretch the containing cells vertically, thus making scrolling a pain
Cross-sheet links are not supported (turns out that can be implemented using bookmarks)
So my question is basically this - should we try solving these issues somehow (i.e. is that even possible), or should we use some excel rendering extension with more formatting options ? Can you recommend any extensions ?
You may want to take a look at Apose.Cells. I've never used their products, but you can download a free trial and see if it suits your needs.
Alternatively, you can create custom renderer (MSDN)