はじめに
先日、 2024/06/25 に Livebook 0.13.0 がリリースされました
バージョン 0.13 で追加された機能として、 XLSX ファイル(Microsof Excel ファイル)アップロード時の挙動を紹介します
XLSX ファイルの準備
Windows で Excel を使っている場合はそのまま Excel でファイルを作成しましょう
"A1" セルから始まる表を作れば OK です
macOS で Numbers を使っている場合、 XLSX 形式でファイルを出力しても "表1" などの余計なものが出力されてしまい、うまく読み込めません
Google Sheets を使いましょう
以下のような表を作って XLSX 形式でダウンロードしてください
複数シートにも対応しているため、今回は2つシートを作ってみました
ファイルのアップロード
Livebook のセル前後に XLSX ファイルをドラッグ&ドロップします
ファイルアップロードのモーダルが開きます
そのまま Add をクリックしましょう
XLSX ファイルに対して操作を提案されます
"Read sheets" をクリックしてください
"Read file content" を選択した場合は単純にバイナリとして読み込むコードを生成します
XLSX ファイルの読込、テーブル表示に必要なパッケージの追加について確認してきます
"+ Add and restart" をクリックしてください
自動的に必要なコードが追加され、ノートブックが再起動されます
追加されたコードの実行
セットアップセルには以下のコードが追加れています
Kino と XlsxReader をインストールしています
Mix.install([
{:kino, "~> 0.13.0"},
{:xlsx_reader, "~> 0.8.5"}
])
また、以下のコードが追加されています
xlsx_file = Kino.FS.file_path("tables.xlsx")
{:ok, package} = XlsxReader.open(xlsx_file)
tabs =
for sheet <- XlsxReader.sheet_names(package) do
maps =
case XlsxReader.sheet(package, sheet) do
{:ok, []} ->
[]
{:ok, [header | rows]} ->
Enum.map(rows, fn row -> header |> Enum.zip(row) |> Map.new() end)
end
{sheet, Kino.DataTable.new(maps)}
end
Kino.Layout.tabs(tabs)
各セルを実行してみましょう
以下のように読込結果が表示されます
シート毎にタブが分かれて、各シートのテーブルが読み込まれています
読み込んだデータは Livebook 上で簡単に検索、並び替え可能です
CSV の場合
以前の記事でも紹介していますが、 CSV の場合はデータフレームとして読み込んでくれます
まとめ
Livebook で簡単に Excel ファイルを読み込めました
直観的な操作感は Livebook の特長ですね