Maybe I need to close the file or something? This invokation runs fine, but generates *so* much output: ruby -rubygems excelparse.rb stuff.xls so I piped it to head and it bombs: ruby -rubygems excelparse.rb stuff.xls|head Row: 0 Cell: 0> Dispapp Row: 0 Cell: 1> Iprc Row: 0 Cell: 2> UH tag Row: 0 Cell: 3> Weight Row: 0 Cell: 4> Tags removed Row: 0 Cell: 5> Disk removed or wiped Row: 1 Cell: 0> 80118 Row: 1 Cell: 1> 1173 Row: 1 Cell: 2> 961SU Row: 2 Cell: 0> 80118 excelparse.rb:19:in `write': Broken pipe (Errno::EPIPE) from excelparse.rb:19:in `puts' from excelparse.rb:19 from excelparse.rb:15:in `each' from excelparse.rb:15 from /usr/lib/ruby/gems/1.8/gems/parseexcel-0.5.2/lib/parseexcel/worksheet.rb:143:in `each' from /usr/lib/ruby/gems/1.8/gems/parseexcel-0.5.2/lib/parseexcel/worksheet.rb:143:in `each' from excelparse.rb:11 Any hints? The script itself is a minor mod of the example given at the parseexcel site (see below). Mahalo, Dave cat excelparse.rb require 'parseexcel' #Open the excel file passed in from the commandline workbook = Spreadsheet::ParseExcel.parse(ARGV[0]) #Get the first worksheet worksheet = workbook.worksheet(0) j=0 #cycle over every row worksheet.each { |row| i=0 if row != nil #cycle over each cell in this row if it's not an empty row row.each { |cell| if cell != nil #Get the contents of the cell as a string contents = cell.to_s('latin1') puts "Row: #{j} Cell: #{i}> #{contents}" end i = i+1 } end j=j+1 }