csvファイルを読み込む関数。 まず、どういう構造なのか、捕まえてみましょう。
data.md
データを用意します。
チーム,勝ち,負け 阪神, 25, 14 DeNA, 22, 15 巨人, 21, 20 広島, 20, 20 ヤクルト,17, 22 中日, 13, 27
拡張子はmdのままで大丈夫。
データ構造
dv.io.csv()でこのdata.mdを読み込んでみます。
```dataviewjs
d = await dv.io.csv("data.md")
s = JSON.stringify(d)
dv.paragraph(s)
```
実データはvaluesキーに格納されていました。
CSView.md
valuesからデータを読み取りテーブルにします。
```dataviewjs
d = await dv.io.csv("data.md")
k = Object.keys(d.values[0])
a = d.values.map(x => [ x[k[0]], x[k[1]], x[k[2]] ])
dv.table(k, a)
```
どうもこれが基本形。
問題点
data.mdは相対パスで指定すること。 assetsフォルダにあるなら "assets/data.md"。
data.mdの1行目がテーブル・ヘッダーになります。 このとき、カンマの前後にスペースをつけるとややこしくなる。 引用符で囲めば回避できるようだけど。
また、テーブル・ヘッダーに英語を使うと小文字のヘッダーも追加されます。 データを抜き出しやすくする工夫なのだろうけど、表がズレる。
まとめ
項目数を可変にしようとすると簡単に書けない。 ヘンだなあ。
追記
お風呂に入ってて思いついた。可変型。
```dataviewjs
d = await dv.io.csv("data.md")
k = Object.keys(d.values[0])
a = d.map(x => Object.values(x))
dv.table(k, a)
```
追記2
キーがわかっている場合は下記でも良かった。
```dataviewjs
d = await dv.io.csv("data.md")
dv.table(["チーム","勝ち","負け"],
d.map(x => [x.チーム, x.勝ち, x.負け]))
```