spreadsheet as data(ruby版)
TRANSCRIPT
![Page 1: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/1.jpg)
SPREADSHEETASDATA(RUBY版 )サブタイトル
![Page 2: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/2.jpg)
SPREADSHEETASDATA
• 自作ライブラリ• オープンソースで公開• Excelの読み書き• 理想の設計の研鑽のため• Ruby版と C#版• 今日は Ruby版の紹介です
![Page 3: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/3.jpg)
よくある EXCEL操作ライブラリの問題点Excelのオートメーションの利用
裏で Excelを立ち上げている重い
Excelのバージョンの影響マクロはもともと手作業の自動化用
![Page 4: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/4.jpg)
よくある EXCEL操作ライブラリの問題点APIの設計
Excel VBAの呪縛20年以上前の設計使える機能が多すぎる
![Page 5: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/5.jpg)
こんなライブラリが欲しいExcelのデータを利用するライブラリが簡単に書ける直観的で使いやすい API最近の RDBやXML読み込みライブラリにそん色ない
![Page 6: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/6.jpg)
ファイルオープンWorkBook.open(‘./Book1.xlsx’) do |
book|
#bookを扱うコードをここに記述end
![Page 7: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/7.jpg)
セル
puts book.Sheet1.A2 #> Jacob
![Page 8: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/8.jpg)
table = book.Sheet1.A1_D7
# 氏名の書き出しtable.where(good_language: 'Ruby').each do |student| puts student.first_name + ' ' + student.last_nameend
テーブル
![Page 9: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/9.jpg)
table = book.Sheet1.A_D
# 平均年齢 puts table. all. map{|student| student.age }. inject(0){|total, age| total += age } / table.all.size
テーブル
![Page 10: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/10.jpg)
シート
s = book.Sheet1s2 = book.Sheet2
![Page 11: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/11.jpg)
シート
s = book. 一覧表
![Page 12: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/12.jpg)
s = book.Sheet1puts s.A2 #> Jacobputs s['A2'] #> Jacobputs s[:A2] #> Jacob
一つのことをたくさんのやり方で
![Page 13: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/13.jpg)
puts s.A2 + ' ' + s.B2 #> Jacob Smithputs s.C2 + s.C3 + s.C4 #> 40
文字列と数字
![Page 14: Spreadsheet as data(ruby版)](https://reader035.vdocuments.net/reader035/viewer/2022070515/5877cd7c1a28ab39588b7193/html5/thumbnails/14.jpg)
p s.E1 #>{blank}p s.E1 + ' ' #> ""p w.E1 + 0 #> 0
空のセル