>>79 Dも出力するのかこれ。ちょっと(1行と1文字)修正

require "csv"
require "win32ole"

path_to_folder = "."

data = Dir[path_to_folder + "/*.csv"]
.map{|path| CSV.read(path, converters: :numeric)}.flatten(1)
.map{|x, y, z| [x, y, z, (x**2 + y**2 + z**2) ** 0.5]}.sort_by(&:last).reverse

ws = WIN32OLE.new("Excel.Application").tap{|app| app.Visible = true}
.Workbooks.Add.Sheets[1]
cells = ws.Range(ws.Cells(1,1), ws.Cells(data.size, 4))
cells.value = data
ws.ListObjects.Add(nil, cells)



なおcsvライブラリは標準添付ライブラリなのでわざわざ自作クラスとか作る必要ないです