From: RichardOnRails Date: 2008-10-29T13:14:27+09:00 Subject: Re: Open a MS Excel file from within Ruby On Oct 27, 1:57 pm, Chris Hulan wrote: > On Oct 25, 1:20 pm, RichardOnRails > > > > wrote: > > Hi. > > > I'm writing a small Ruby pgm to demonstrate that FasterCVS is a good > > way to handle CSV data. > > > I put up a small CSV file and demonstrated the FasterCSV aspect.  I'd > > like to precede that step by automatically bringing up the CSV file in > > Excel. (I know I could bring it up manually, but I'd like a self- > > contained demo for a computer-illiterate person.) > > > I've got "fn" set to a string which is the fully qualified name of the > > CSV file.  I concocted the (failing) command: > > > SystemCommand.start("Excel", fn) > > > based on my interpretation of the RDoc for Shell::SystemCommand.  I > > took a wild stabs to no avail at adding "require 'system'" and > > "require 'shel'" > > > I'm running: > > ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] > > WinXP-Pro/SP3 > > > TIA, > > Richard > > You probably should look at system (its in kernel so no require > needed) > something like: > system "start excel c:\\pathto\\my\\file.csv" > > cheers Hi Axel & Chris, Thanks for your responses. I had some success, but was unable to get at the content of my Excel file. Axel, I was able the get an Excel instance and find it's methods. What I didn't find but think I need it to access the content of a worksheet. Chris, I was unable to use "system" to open an Excel file. Maybe I little dense (or two dense to foll around with Win32OLE.) Below is the code I fooled around with. If you have any other ideas, I'd be grateful to receive them. Best wishes, Richard # LoadDataTest.rb # K:\_Projects\Ruby\_Rails_Apps\PayrollLoader require 'win32ole' pgm = DATA.read.chomp fn = DATA.read.chomp puts pgm, fn, "" excel = WIN32OLE.new('Excel.Application') # puts excel.methods.sort --worked fine # puts excel.ole_get_methods--worked fine also, I think # Try to find an "open" method: excel.ole_methods.each { |meth| puts meth if meth.to_s =~ /Op/i } #system( "pgm", fn ) # Couldn't open the document puts "", "EOJ" __END__ F:\Docume~1\AllUse~1\StartM~1\Programs\_Microsoft \Micros~3\Micros~2.lnk K:\_Projects\Ruby\_Rails_Apps\PayrollLoader\TestSheet.csv AceI fooled around with