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サイズの用紙に入るように拡大し、ど真ん中に配置されるように上下左右の余白を自動で設定できるようにしたい。

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



人の行く裏に道あり花の山

2024-05-04 07:46:06 | SQL
「人の行く裏に道あり花の山」

これは株やFX等の相場の格言らしい。

俺はそれ以外にもこの格言を適用したいと思った。

例えば、プログラミング言語。

GUIアプリだのWebアプリだのAIだのってC++やJava、Python、Javascript、PHPなどが持て囃されているが、これらはまさに「人の行く」所。

食っていけなくなるのを恐れて必死になって情報を直隠しにしているバカ共ばかり。
ググれば良いだのGitHubにソースコードがいくらでも出ているだのウソをつきまくっている。

ググって簡単に出てくるようなものだったらテメエ等は食っていけなくなるんじゃないのか?

言っていることが明らかに矛盾しているだろ?

では「人の行く裏にある道」とは何か?

答えは【SQL】。

GUIアプリすら作れないし、データベース操作に特化した、C++やJava、Pythonにくらべたらほぼ何もできないに等しい超絶不人気言語。

SQLは実務レベルの本がゴロゴロ出ている。
例えば、「これで解決 SQL ServerからOracleへの移行ガイド」





黒揚羽

2024-05-03 16:30:10 | 日記



犬の散歩に行ってきたら、道路に黒揚羽が瀕死の状態で横たわっていた。

とりあえず水を飲ませて廊下の壁に張り付かせてやった。

玄関の吹き抜けを飛び回れるようになったら森に放しにいこうかな。


う・ん・こ

2024-05-03 13:09:33 | 日記
うんこ

うんこ💩みたいな巻き方のシッポwww


あっという間に成犬のサイズに成長した。去年死んだ勘吉よりもデカくなった。

写真は俺の本を枕にしようとしながら転寝しつつある所。
俺が眠くなって座椅子に横になったらこの犬がやってきて一緒に昼寝をした。

教えていないのに「お手」ができるようになっていた。でもお座りはやってくれないが、お手だけでも十分だと思う。