LoginSignup
15
17

More than 3 years have passed since last update.

diff目的でExcelファイルをテキストにPythonで変換

Last updated at Posted at 2020-06-10

Excelファイルをテキストファイルに変換します。cliでdiffすることが目的です。

diff目的なのでテキストファイルからExcelの内容を復元できる必要はありません。CSVだとかにしてしまうと、1行が長くなってdiffしてもコマンドラインでの差分が非常に見づらいので、セルごとに1行にしたいです。

都合の良さそうなツールがすぐに見つからず、スクリプト書いたほうが早かったので書きました。

Pythonでopenpyxlというライブラリを使います。

$ pip install openpyxl

ソースコードはこれだけです。

import sys
import openpyxl

filepath = sys.argv[1]
sheetname = ""
if len(sys.argv) > 2:
    sheetname = sys.argv[2]

wb = openpyxl.load_workbook(filepath)

for ws in wb:
    if sheetname != "" and ws.title != sheetname:
        continue
    print(f"sheet:{ws.title}")
    for row in ws:
        print("  row")
        for cell in row:
            if cell.value == None:
                print("")
            else:
                print(f"    {cell.value}")

xls2txt.py のような名前で保存しておけば、以下でExcelファイルに含まれる全シートの内容がテキストで出力されます。

※セルに入っている値または数式が出力されるのみですので、書式やコメントなどは考慮外です。

$ python xls2txt.py foo.xls

特定のシートのみを見たければシート名を指定します。

$ python xls2txt.py foo.xls Sheet1

diffを見るにはたとえば次のような感じです。

$ diff -U5 <(python xls2txt.py foo.xls Sheet1) <(python xls2txt.py bar.xls Sheet1) | less

diffでの差分を見やすくしたければこちらを参照。
diffコマンドをカラー表示にして見やすくする方法

15
17
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
15
17