https://stackoverflow.com/questions/3321011/parsing-xls-and-xlsx-ms-excel-files-with-ruby
rooでxlsx形式のファイルの内容を表示する。
(view_xlsx.roo.rb)
#!/usr/bin/env ruby require 'roo' workbook = Roo::Spreadsheet.open ARGV[0] worksheets = workbook.sheets puts "Found #{worksheets.count} worksheets" worksheets.each do |worksheet| #puts "Reading: #{worksheet}" num_rows = 1 workbook.sheet(worksheet).each_row_streaming do |row| row_cells = row.map { |cell| cell.value } print "#{worksheet}: #{num_rows} #{row_cells}\n" num_rows += 1 end #puts "Read #{num_rows} rows" end
$ ./view_xlsx.roo.rb ~/Downloads/data_list_20190807.xlsx Found 2 worksheets 変更履歴: 1 [] 変更履歴: 2 ["日付", "変更箇所", "変更内容"] 変更履歴: 3 ["2019.06.28", "全般", "運用開始"] 変更履歴: 4 ["2019.08.07", "高度な気象データ(観測) > 解析積雪深・解析降雪量", "解析積雪深と解析降雪量を新規追加"] 変更履歴: 5 [nil, "高度な気象データ(観測) > 海洋", "北西太平洋高解像度日別海面水温解析格子点資料 の2018年度データを追加"] 変更履歴: 6 [nil, "高度な気象データ(予報) > 海洋", "沿岸波浪数値予報モデルGPVを新規追加"] 変更履歴: 7 [nil, "高度な気象データ(防災情報)", "電文(気象特別警報/警報/注意報、全般気象情報、地方気象情報、府県気象情報、週間天気予報、天気予報\n)と図情報(地方、全国)を新規追加"] 20190807版: 1 ["気象過去データ利用環境 利用可能データ一覧(2019年8月7日時点版)", nil, nil, nil, "黄色背景は、前回からの変更"] 20190807版: 2 ["〇基本的な気象データ", nil, nil, nil, nil, nil, nil] 20190807版: 3 ["データ種類", "データ種類(細分)", "提供データ期間", "データディレクトリ", "アーカイブファイル", "容量の目安", "補足"] 20190807版: 4 ["地域気象観測(アメダス)", "10分値", "2003年1月~2019年3月", "/basic_data/kansoku/amedas", "10min_${yyyy}.tar.gz", "各200MB", "yyyy=2003~2019"] 20190807版: 5 [nil, "10分・時別値", "2008年3月~2019年3月", nil, "10min_h_${yyyy}.tar.gz", "各2GB", "yyyy=2008~2019", nil] ...
rubyXLでxlsx形式のファイルの内容を表示する。
(view_xlsx.rbxl.rb)
#!/usr/bin/env ruby require 'rubyXL' workbook = RubyXL::Parser.parse ARGV[0] worksheets = workbook.worksheets puts "Found #{worksheets.count} worksheets" worksheets.each do |worksheet| #puts "Reading: #{worksheet.sheet_name}" num_rows = 0 worksheet.each_with_index do |row, row_index| row_cells = "" row && row.cells.each{ |cell| cell && row_cells += cell.value.to_s + "\t" } puts "#{worksheet.sheet_name}: #{row_index}: #{row_cells}" num_rows += 1 end #puts "Read #{num_rows} rows" end
実行してみる。
$ ./view_xlsx.rbxl.rb ~/Downloads/data_list_20190807.xlsx Found 2 worksheets 変更履歴: 0: 変更履歴: 1: 日付 変更箇所 変更内容 変更履歴: 2: 2019.06.28 全般 運用開始 変更履歴: 3: 2019.08.07 高度な気象データ(観測) > 解析積雪深・解析降雪量 解析積雪深と解析降雪量を新規追加 変更履歴: 4: 高度な気象データ(観測) > 海洋 北西太平洋高解像度日別海面水温解析格子点資料 の2018年度データを追加 変更履歴: 5: 高度な気象データ(予報) > 海洋 沿岸波浪数値予報モデルGPVを新規追加 変更履歴: 6: 高度な気象データ(防災情報) 電文(気象特別警報/警報/注意報、全般気象情報、地方気象情報、府県気象情報、週間天気予報、天気予報 )と図情報(地方、全国)を新規追加 20190807版: 0: 気象過去データ利用環境 利用可能データ一覧(2019年8月7日時点版) 黄色背景は、前回からの変更 20190807版: 1: 20190807版: 2: 〇基本的な気象データ 20190807版: 3: データ種類 データ種類(細分) 提供データ期間 データディレクトリ アーカイブファイル 容量の目安 補足 20190807版: 4: 地域気象観測(アメダス) 10分値 2003年1月~2019年3月 /basic_data/kansoku/amedas 10min_${yyyy}.tar.gz 各200MB yyyy=2003~2019 20190807版: 5: 10分・時別値 2008年3月~2019年3月 10min_h_${yyyy}.tar.gz 各2GB yyyy=2008~2019 ....
参考)Excel date format cell and time zones
https://github.com/weshatheleopard/rubyXL/issues/223