10
2
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Livebook に XLSX ファイルをアップロードするとシート内のテーブルを読み込める

Last updated at Posted at 2024-06-30

はじめに

先日、 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つシートを作ってみました

スクリーンショット 2024-06-29 16.50.31.png

スクリーンショット 2024-06-29 16.50.39.png

スクリーンショット 2024-06-29 16.51.07.png

ファイルのアップロード

Livebook のセル前後に XLSX ファイルをドラッグ&ドロップします

drop.png

ファイルアップロードのモーダルが開きます

そのまま Add をクリックしましょう

スクリーンショット 2024-06-29 16.52.52.png

Name は英数字と - _ . しか使えないので、日本語ファイル名を使う場合は Name を変更しましょう

スクリーンショット 2024-06-29 16.51.38.png

XLSX ファイルに対して操作を提案されます

"Read sheets" をクリックしてください

スクリーンショット 2024-06-29 16.53.01.png

"Read file content" を選択した場合は単純にバイナリとして読み込むコードを生成します

XLSX ファイルの読込、テーブル表示に必要なパッケージの追加について確認してきます

"+ Add and restart" をクリックしてください

スクリーンショット 2024-06-29 16.53.11.png

自動的に必要なコードが追加され、ノートブックが再起動されます

スクリーンショット 2024-06-29 17.13.55.png

追加されたコードの実行

セットアップセルには以下のコードが追加れています

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)

各セルを実行してみましょう

以下のように読込結果が表示されます

スクリーンショット 2024-06-29 17.19.05.png

スクリーンショット 2024-06-29 17.19.13.png

シート毎にタブが分かれて、各シートのテーブルが読み込まれています

読み込んだデータは Livebook 上で簡単に検索、並び替え可能です

CSV の場合

以前の記事でも紹介していますが、 CSV の場合はデータフレームとして読み込んでくれます

まとめ

Livebook で簡単に Excel ファイルを読み込めました

直観的な操作感は Livebook の特長ですね

10
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2