1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Chromebook + web版Excel の csv ファイル入出力

Last updated at Posted at 2021-12-01

(2024.3.19 更新)
web版Excel も CSV エクスポートができるようになりましたが、記事は残しておきます。

(2024.2.17 更新)
内容を大幅に絞って、タイトルを変更しました。
旧タイトル「Chromebook + web版Excel でも十分かな?」

初稿に載せた PowerShell や ScriptLab の利用に関する内容は一旦削除して、後日あらためて記事にする予定です。

はじめに

Chromebook での表計算は Google Sheets か web版Excel を使うことになりますが、web版Excel の場合 csv ファイルの出力ができない(入力も一旦 OneDrive にアップロードが必要)等の不満があります。
Linux コンソールとクリップボードで使い勝手を改善したいと思います。

内容は、以前に投稿した「Excelでちょっとした正規表現を使いたい」の延長になります。

準備

ターミナルの準備

Linux 開発環境に用意される「ターミナル」アプリは ChromeOS とのクリップボードの共有ができません。
image.png

よって、Konsole(https://konsole.kde.org/) や VSCode のターミナルなど、他のターミナルを用意します。

クリップボードインターフェイス

Linux のクリップボードコマンドには xsel や xclip などがありますが、今回は xsel を使いました。
sudo apt install xsel でインストールできます。

動作検証環境

Chromebook + web版Excel で動作確認しています。

  • Chromebook:ASUS CX1500CKA-EJ0015(Celeron N4500,メモリ4GB)
  • Linux 開発環境:Debian 11
  • ターミナル:Konsole

csv ファイルの入出力

csv ファイルに出力

下図は動作確認の様子です。(左:web版Excel, 右:Konsole )
image.png

web版Excel でセル範囲をコピーして xsel -b でクリップボードを取得すると列がタブ区切りになっていることがわかります。

続いて、od コマンドにパイプして文字単位で出力する(xsel -b | od -An -c)と、行区切りは CRLF(\r\n)で、最終行末尾に改行文字の無いことがわかります。
構造がわかったら sed で

  • タブ(\t)からコンマへの置換
  • CR(\r)除去
  • 末尾に LF を追加

して、あらためて od で確認します。

Google Sheets や デスクトップ版Excel など、他の表計算アプリケーションでは、それぞれ区切りの構造に多少の違いがあります。十分確認して csv に変換してください。

うまく置換できているようなので、リダイレクトで csv ファイルに書き出します。

bash
xsel -b | sed 's/\t/,/g;s/\r//g;$a\' > csvout.csv

なお、行数が多い場合は csv ファイル出力する前に、head コマンドで事前に一部を確認しておくことも可能ですし、シートの必要な部分だけを選択・コピーしてファイル出力することも可能です。

なお、リダイレクトによるファイルの上書きには十分注意してください。

csv ファイルから入力

下図は、画面右の手順で csv ファイルを作成して、左の Excel に貼り付けた様子です。
image.png
sed でコンマをタブに変換し、xsel -b でクリップボードに渡します。
xsel -b はクリップボードの読み書き両方に使えます。

bash
sed 's/,/\t/g' csvin.csv | xsel -b

あとは、web版Excel にペーストするだけです。(上図左)

その他もろもろ

数値の扱い

image.png
図は A列/B列=C列 です。
画面表示に関わらず、クリップボードは既定の桁数で記録されます。

数式も保存しておきたい

これは web版Excel に限った話ではありませんが、ワークシートで=FORMULATEXT を使えば数式も合わせて保存できます。
image.png

セル内改行

セル内改行がある場合は、LF を含む文字列を"(ダブルクォート)で囲みます。

echo で直接書き込んで確認してみます。

bash
echo -e '"あ\nい\nう"\t\t"い\nろ\nは"\n一\t二\t三' | xsel -b

Excel にペーストすると、ちゃんとセル内改行されています。
image.png

おことわり

そもそも web版Excel で大規模なワークシートを扱うことは考えにくい(個人の感想)ので、クリップボードのサイズや処理速度などについて検証はしていません。
個人的な事務処理程度ならば低スペックのハードウェアでも十分実用になるかと思います。

参考

なお、クリップボードを使ったExcelとPythonの連携は、こちらの記事が解説も丁寧で参考になります。

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?