開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)の第Ⅱ部(処理の自動化)、12章(Excelシート)、12.14(演習プロジェクト)、12.14.5(スプレッドシートからテキストファイルに変換する)の解答を求めてみる。
コード
#!/usr/bin/env python3
import openpyxl
wb = openpyxl.load_workbook('files.xlsx')
sheet = wb.active
for row in range(1, sheet.max_row + 1):
with open(f'sample5_{chr(ord("a") + (row - 1))}.py', 'w') as f:
for cell in sheet[row]:
if cell.value is not None:
print(cell.value, file=f, end='')
入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))
% ./spressheetToText.py
% cat sample5_a.py
#!/usr/bin/env python3
import argparse
import os
import openpyxl
from openpyxl.cell.cell import get_column_letter
from openpyxl.styles import Font
print('1.')
parser = argparse.ArgumentParser()
parser.add_argument('number', type=int)
args = parser.parse_args()
n = args.number
wb = openpyxl.Workbook()
sheet = wb.active
font_obj = Font(bold=True)
for row in range(1, n + 2):
for col in range(1, n + 2):
if row == col == 1:
continue
col_str = get_column_letter(col)
cell = sheet[f'{col_str}{row}']
if row == 1:
cell.font = font_obj
cell.value = col - 1
elif col == 1:
cell.font = font_obj
cell.value = row - 1
else:
cell.value = (row - 1) * (col - 1)
wb.save('multiplicationTable.xlsx')
% diff sample5_a.py multiplicationTable.py
% diff sample5_b.py blankRowInserter.py
% diff sample5_c.py swap.py
%
0 コメント:
コメントを投稿