CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

EXCEL曜日書き込みツールを作らせた。

2024-05-06 18:37:15 | python




「A列に2024/05/01という形式で日付を書き込んだEXCEL表ファイルがあり、

これを2024年5月1日という形式に書き換えて、B列に曜日を書き込め。」

これだけの簡単なことなのに20回くらいCHATGPTに修正させる羽目になった。




import tkinter as tk
from tkinter import filedialog
import xlrd
import xlwt
from datetime import datetime

def calculate_weekday(input_date):
try:
# 日付文字列を日付オブジェクトに変換
date_obj = datetime.strptime(input_date, '%Y年%m月%d日')
# 曜日を返す
weekday_names = ['月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日', '日曜日']
return weekday_names[date_obj.weekday()]
except ValueError:
# 日付の形式が無効な場合はエラーメッセージを返す
return '日付の形式が無効です'

def process_excel(filename):
try:
# Excelファイルを開く
workbook = xlrd.open_workbook(filename, formatting_info=True)
sheet = workbook.sheet_by_index(0)

# 新しいExcelブックを作成
new_workbook = xlwt.Workbook()
new_sheet = new_workbook.add_sheet(sheet.name)

# 日付と曜日を書き込む
for row in range(sheet.nrows):
input_date = sheet.cell_value(row, 0)
if isinstance(input_date, float):
input_date_str = datetime(*xlrd.xldate_as_tuple(input_date, workbook.datemode)).strftime('%Y年%m月%d日')
else:
input_date_str = input_date
new_sheet.write(row, 0, input_date_str) # 日付を書き込む
weekday = calculate_weekday(input_date_str)
new_sheet.write(row, 1, weekday) # 曜日を書き込む

# 新しいExcelファイルの保存
new_filename = filename.replace('.xls', '_updated.xls')
new_workbook.save(new_filename)
return f'曜日が書き込まれました。新しいファイル "{new_filename}" に保存されました。'
except Exception as e:
return f'エラーが発生しました: {str(e)}'

def browse_file():
# ファイル選択ダイアログを表示し、選択されたファイルのパスを取得
filename = filedialog.askopenfilename(filetypes=[("Excel files", "*.xls")])

if filename:
result_label.config(text='処理中...')
result = process_excel(filename)
result_label.config(text=result)

# メインウィンドウの作成
root = tk.Tk()
root.title('Excel曜日書き込みツール')

# ファイル選択ボタン
browse_button = tk.Button(root, text='Excelファイルを選択', command=browse_file)
browse_button.pack(pady=10)

# 結果表示ラベル
result_label = tk.Label(root, text='')
result_label.pack()

# ウィンドウを表示
root.mainloop()




ちなみに新しくファイルを作れとは指示していないが、勝手に新しくファイルを作って書き直しするようになっている。本当は上書き保存でよかったのだが・・・



※このツールを作るきっかけは、親会社の若造にコケにされたことである。日付を入れていってその隣に手打ちで曜日を入れている俺を見て、何も力技でしなくともwwwと言われた。

それからA1で図面をプリントアウトして欲しいと所長に言われ、出力用紙を単純にA1としたら、A1のサイズの用紙にA4の原稿が印刷されてしまい、印刷設定ですったもんだしたし、この若造もあれっ?あれっ?となって焦っていた。結局、ベテラン社員から「お前らこんなこともできねーのかよ?www」とバカにされた。

これもPythonでコーディングしてexe化して職場に持ち込んでやろうかと思っている。

任意のサイズの原稿をA1サイズの用紙に入るように拡大し、ど真ん中に配置されるように上下左右の余白を自動で設定できるようにしたい。

俺はエクセルワードを極めたとしても、その仕事専門で採用されないから敢えてワードしかやらなかったし、エクセルも仕事で使う機会もなかったから必要性を感じずに放置していた。誰かがテンプレートを用意していて、そこに数字や文字などをブチ込むだけで事足りた。




最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。