目的
テキストファイルから定型部分の取り込みからエクセルファイルへの書き込みをできるようにする。
step6:テキストファイルの読み込み~エクセルに張り付け
import openpyxl
def step06():
print("step06")
wb = openpyxl.Workbook()
ws = wb["Sheet"]
# テキストファイルオープン(UTF-8形式)
with open('./lifedata_man_2023.txt', encoding='utf-8') as f:
# 1行読み込み(先頭行)
line = f.readline()
# コピーする行番号を1にする
num_line = 1
# データがあるだけ繰り返す
while line:
# 1行のデータを表示(改行部分を除く)
line_1 = line.rstrip("\n")
# 半角スペースで分割
line_2 = line_1.split(" ")
print(line_2)
# エクセル上にコピー
num_col = 1
for col_data in line_2:
ws.cell(num_line,num_col).value = col_data
num_col += 1
# 次の行を読み込み
line = f.readline()
# コピーする行番号を1追加
num_line += 1
# エクセルファイルの保存
wb.save('input_file_step06.xlsx')
wb.close()
# 動作部
step06()
動作結果('input_file_step06.xlsx')
step7:テキストデータの取り込み~エクセルに張り付け(データ部の属性を指定)
import openpyxl
def step07():
print("step07")
wb = openpyxl.Workbook()
ws = wb["Sheet"]
# テキストファイルオープン(UTF-8形式)
with open('./lifedata_man_2023.txt', encoding='utf-8') as f:
# 1行読み込み(先頭行)
line = f.readline()
# コピーする行番号を1にする
num_line = 1
# データがあるだけ繰り返す
while line:
# 1行のデータを表示(改行部分を除く)
line_1 = line.rstrip("\n")
# 半角スペースで分割
line_2 = line_1.split(" ")
print(line_2)
# エクセル上にコピー
# ヘッダ部(2行目まで)
if(num_line <= 2):
num_col = 1
for col_data in line_2:
ws.cell(num_line,num_col).value = col_data
num_col += 1
# 2行目以降は整形する
else:
age = int(line_2[0])
rate = float(line_2[1])
lx = int(line_2[2])
ndx = int(line_2[3])
nLx = int(line_2[4])
Tx = int(line_2[5])
ex = float(line_2[6])
# セルへコピー
ws.cell(num_line,1).value = age
ws.cell(num_line,2).value = rate
ws.cell(num_line,2).number_format = '0.00000' #
ws.cell(num_line,3).value = lx
ws.cell(num_line,4).value = ndx
ws.cell(num_line,5).value = nLx
ws.cell(num_line,6).value = Tx
ws.cell(num_line,7).value = ex
ws.cell(num_line,7).number_format = '0.00'
# 次の行を読み込み
line = f.readline()
# コピーする行番号を1追加
num_line += 1
# オートフィルタ範囲の設定
ws.auto_filter.ref = 'A2:G2'
# ウィンドウ枠の固定(2行目まで)
ws.freeze_panes = 'A3'
# エクセルファイルの保存
wb.save('input_file_step07.xlsx')
wb.close()
# 動作部
step07()
動作結果('input_file_step07.xlsx')
サンプルソースコード&データ(github)
履歴
2024/08/10 新規作成
リンク
[1] 生命表 2023年 男
https://www.mhlw.go.jp/toukei/saikin/hw/life/life23/dl/life23-06.pdf