2020年2月24日月曜日

開発環境

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)の第Ⅱ部(処理の自動化)、12章(Excelシート)、12.14(演習プロジェクト)、12.14.2(空行を挿入する)の解答を求めてみる。

コード

#!/usr/bin/env python3
import argparse
import openpyxl

parser = argparse.ArgumentParser()
parser.add_argument('N', type=int)
parser.add_argument('M', type=int)
parser.add_argument('filename', type=str)
args = parser.parse_args()

filename = args.filename
n = args.N
m = args.M

wb_old = openpyxl.load_workbook(filename)
wb_new = openpyxl.Workbook()
sheet_old = wb_old.active
sheet_new = wb_new.active

for row in range(1, sheet_old.max_row + 1):
    if row < n:
        row_new = row
    else:
        row_new = row + m
    for col in range(1, sheet_old.max_column + 1):
        cell_old = sheet_old.cell(row=row, column=col)
        cell_new = sheet_new.cell(row=row_new, column=col)
        cell_new.value = cell_old.value

wb_old.save(f'old_{filename}')
wb_new.save(f'{filename}')

入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))

% ./blankRowInserter.py 
usage: blankRowInserter.py [-h] N M filename
blankRowInserter.py: error: the following arguments are required: N, M, filename
% ./blankRowInserter.py 3 2 multiplicationTable.xlsx 
% open old_multiplicationTable.xlsx multiplicationTable.xlsx 
%

0 コメント:

コメントを投稿