excelって、行とか列とかどっちやねん的な雰囲気が嫌いなんですけど。
いつまでたってもおぼえらんね。
そんな中、持ってるプロジェクトで、クソでかいexcelファイルをいじって確認して差分とってみたいなのやってもらわなきゃなんないのがわかって、「え?もしかして作業遅れてたら、終わるの待ったりしなきゃいけねんじゃね?それウザくね?早く帰れなくね?イナズマイレブンみれなくね?」ってことで、意地と気合いと根性で自動化することにした。
いつまでたってもおぼえらんね。
そんな中、持ってるプロジェクトで、クソでかいexcelファイルをいじって確認して差分とってみたいなのやってもらわなきゃなんないのがわかって、「え?もしかして作業遅れてたら、終わるの待ったりしなきゃいけねんじゃね?それウザくね?早く帰れなくね?イナズマイレブンみれなくね?」ってことで、意地と気合いと根性で自動化することにした。
ってことで、excelをいじれるようにするmoduleのインストール。とりあえず日本語の解説ページが見つかったので、xlrdを選択。
書いてみたのが1列目の1行目からデータのある最後の行まで値を取得して、セル値ごとにカンマ(,)を投入して、行の最後まで行ったら改行ってなfunction。
例えばこんなexcelファイルがあったとする。
| A | B | C
1|りんご | ゴリラ | ラッパ |
--------------------------------
2|パンツ | つみき | きりん |
これを以下のスクリプトでこんな感じのテキストファイルに変換することができる。
りんご,ゴリラ,ラッパ,
パンツ,つみき,きりん,
いじるファイルには小数点が入っていたりするので、float objectには分岐をくっつけて別の処理に送ってるけど、基本的にテキストオンリーなexcelなら分岐いらないと思う。
def open_excel1(): f1 = open('test_data.txt','wb') book = xlrd.open_workbook('test_data.xls') sheet1 = book.sheet_by_index(0) for row1 in range(sheet1.nrows): for col1 in range(sheet1.ncols): data = sheet1.cell(row1,col1).value if type(data) == float: data = int(data) data = str(data) f1.write(data + ',') else: data = data.encode('utf-8').rstrip('\n') f1.write(data + ',') f1.write('\n') f1.close()
0 件のコメント:
コメントを投稿