今、話題の人工知能(AI)などで人気のPython。初心者に優しいとか言われていますが、全然優しくない! という事を、つらつら、愚痴っていきます

118.EXCEL方眼紙の正しい使い方

»

初回:2020/12/23

1.邪道の中の王道

 みなさんは、EXCEL方眼紙というEXCELの使い方をご存じでしょうか?

P子「知ってるに決まってるでしょ」(※1

 まあ、知ってて当然でしょう。油たっぷりコレステロールの塊みたいなおいしい料理と同じようなもんです。

P子「どちらかというと、刺身醤油にマヨネーズ系じゃない?」

 EXCEL方眼紙というと、意見が真っ二つに分かれます。私は推進派ではありませんが、擁護派です。使いたいのに反対派の人達に邪魔されたくはありません。

P子「擁護派って、真っ二つに分かれてないんじゃない?」

 そういう細かいことは気にしないでください。

 ここでの主張は『使いたい人は使えばいいじゃん』という事です。

P子「反対派の人は、そういういい加減な使い方されると後が大変だから怒ってるんでしょ」

 そこで、反対派の人も大目に見てくれるように、節度あるEXCEL方眼紙の使い方を考えていきたいと思います。

P子「ポテトチップスを細かくしてご飯にふりかけて食べるという感じね」

 さらに、上から生卵をかけると...って違います。

2.反対派のご意見

 この手の宗教戦争は、色々なところで行われており、公開討論会まで開かれていたようです。

 《参考資料》
  https://www.publickey1.jp/blog/17/excelexcel_excelexcelpr.html
  「Excel方眼紙」と「神Excel」は違うのか?
  Excel方眼紙の賛否を問う「Excel方眼紙公開討論会」実施[PR]

 ここ、エンジニアライフさんの検索窓で『Excel方眼紙』と入れて検索しても、過去に色々なコラムニストさんが、Excel方眼紙について書かれています。

P子「じゃあ、あえて使い古されたネタを持ってくる理由はなに?」

 なんとなく目についたから?

 実際、帳票のひな型をEXCELで作成して印刷するというのは結構便利です。最近ではEXCEL単体でPDF化も出来ますし、キーワードを配置しておいてデータベースのデータを置換することで各種帳票の作成も出来ます。

 まずは、先の討論会の内容から、反対派の主張をピックアップしてみたいと思います。
 ・1文字1セルのような入力の利便性をまったく考慮しないレイアウト
 ・むやみなセル結合
 ・データとしての再利用が困難な複雑な帳票
 ・帳票を作るためにいろんな技術(小細工)が駆使されている
 ・入力項目を移動するためにわざわざマウスや矢印キーを使わなくてはならない
 ・結合すべきセルが結合されてない場合もある
 ・『円』や『年』といった単位まで入力させる
 ・セルに見せかけた枠、透明のシェイプは精神がやられてしまう
 ・隠し行や列は使わない(見えないものは忘れるから作らない)
 ・ややこしい使い方はしない

 私はExcel方眼紙でなくても、セル結合は嫌いです。ソートできなくなるとか、フィルターでデータがうまく選択できないとか、厄介です。帳票として印刷に使うだけなら別段問題ありませんが、それでも必要以上にセル結合は嫌です。

 さて、1セル1文字の入力を強要するためのExcel方眼紙は論外として、利用目的別に正しい使い方を考えてみたいと思います。

3.利用目的別正しい使い方

 まずは、普通に場合分けしてみると、

 ①人が入力する
 ②データをシステムに取り込む
 ③印刷する

 ①→③とか、①→②とかの組み合わせは当然発生します。

 反対派の人達の意見の中に、入力のしにくさというのが多い印象を受けます。しかし、これはExcel方眼紙とは別の次元の話で、パネリストの方々も指摘されているように、単にExcelの使い方を知らない人が既存の紙ベースの入力フォームをまねて作成したのが原因であって、システムを作ろうが、方眼紙にしない作りにしようが、使いにくい仕組みを作ってしまうと思います。

 ①人が入力する に関しては、入力の手間を最小限にすること...であり、
  1文字1セルは禁止
  むやみなセル結合は禁止
  小細工禁止
  シェイプへの入力禁止
  単位の自動入力サポート
  数字か文字か日付の自動判別による適切なサポート

 Excel方眼紙とは関係しないという事が、なんとなくご理解いただけたかと思います。

 ②データをシステムに取り込む に関しては、勝手にいろんな場所に記入されると取り込みが大変なので、レイアウトをきちんと作る必要があります。Excel方眼紙の場合、罫線を入れて帳票ライクな見た目にするため、比較的素直に入力してもらえると思います。後は、取り込みやすさを考慮しておけば、それほど難しい事ではありません。となると、①とほぼ、同じ感じで、
  1文字1セルは禁止
  むやみなセル結合は禁止
  小細工禁止
  シェイプへの入力禁止

 位を守っておけば、問題ないでしょう。

  ③印刷する は、Excel方眼紙の真骨頂というか、このために方眼紙状にしているのですから、問題はありません。あえて注意点があるとすれば、システムでデータを入力することも考慮して、② と同じにしておけば良いでしょう。

4.まとめ

 Excel方眼紙を積極的に推進するつもりはありませんが、他の選択肢と比べて、お手軽で便利なら利用しても良いと思います。その場合でも、

  1文字1セルは禁止
  むやみなセル結合は禁止
  小細工禁止
  シェイプへの入力禁止
  単位の自動入力サポート
  数字か文字か日付の自動判別による適切なサポート

 程度のルール付けを行い、節度を持って使用すれば批判されることはないと思います。

5.おまけ

 Excel方眼紙で書かれてあっても、シート名と行・列のデータをプログラムで読み込めれば、システムに取り込むのは簡単でしょう。指定の行と列のデータをシステムの指定のデータベースのカラムにINSERTかUPDATEするだけなので。
 通常は、ワークデータベースと対応表を用意すれば、Excel方眼紙のあらゆる形式のデータを自動的に読み込むことも可能です。普段はJava+apache POIで処理していますが、折角なので、Pythonで作ってみます。

 最初、読み込みだけなので xlrd で作ったところ、xls形式は読めましたが、xlsx形式が読めません。なんと、xlrd の最新版から、xlsx のサポートがなくなったそうです。下記の参考資料の説明だと、pandas も影響を受けているようです。

 《参考資料》
  https://oku.edu.mie-u.ac.jp/~okumura/python/201212.html
  xlrd が xlsx に対応しなくなった

 だから、Pythonなんて、大っ嫌いなんです。

P子「Python関係だけど、Pythonのせいじゃないわよね」

 そこで、今更xls対応のサンプルを作るのは嫌なので、xlsxのサンプルを作ってみました。ここでは、xlsx(のみの読み書きができる)OpenPyXLを使います。いつもは、RaspberryPi上のPythonを使っていますが、相手がExcelなので、Windwos上にインストールする所から書きたいと思います。

 ①WindwosにPythonをインストールする。
  https://www.python.org/downloads/ からDownload Python 3.9.1ボタンを押す
  ファイルを保存してダブルクリック、ほぼ、それだけです。
 ②openpyxlをinstall する。
  DOS窓で、py -m pip install openpyxl
  py がPythonランチャーで、pythonを起動します。
  通常のままではPathが通ってないので、pythonと打っても起動しません。
 ③pythonを起動。
  先の py か、WindwosのメニューからIDLE (Python 3.9 64-bit)を選ぶか、展開してPython 3.9 (64-bit)を選びます。
 ④下記のプログラムをコピペするか、打ち込みます。
  sample.xlsx は各自でご用意ください。

import openpyxl

wb = openpyxl.load_workbook('c:/temp/sample.xlsx')

for ws in wb:
print( "SHEET:" + ws.title )
for row in ws :
for cell in row :
print( cell.value ,end=',')
print()
print()

 説明するまでもありませんが、ファイルを開いてワークブックを作成、そこからシート、行、セルと取得しているだけです。後は、DBに登録するなり好きに出来ると思います。

 ほな、さいなら。

======= <<注釈>>=======

※1 P子「知ってるに決まってるでしょ」
 P子とは、私があこがれているツンデレPythonの仮想女性の心の声です。

Comment(8)

コメント

qq

この記事で、丸数字は必要ないです。
丸数字を使わないでもよいところで丸数字を使ってほしくない。

a

いつまで印刷前提なのか、と思わずにはいられない

しろぎん

よくWordを使えという人がいるけど、Wordで方眼紙が使えないからExcelで方眼紙使ってるのよねぇ…

Horus

紙の方の方眼紙の良さが最近分かるようになってきました。


最近、アナログにも精通しておくと見解が広がるかもと思い、物理でメモを取る練習をしています。確かに、紙に書く感覚になれていたら、Excel方眼紙の方がなじむと感じました。逆に、あの感覚でWordをつかったら、ぶん殴りたくなると思います。


ちなみに、openpyxl で Excel のデータを取り込んだ時、後続処理に何をつかいますかね。Powershellでやる場合、PSObject (Powershell標準のデータ形式みたいなもの) に変換して、コマンドラインで処理したりしています。Pythonでは、Pandasでも使うのか?それとももっとスタンダードな手法でもあるのか?いつもやっている定石的な手法でもあれば、お聞きしたいです。

コメントを投稿する