xls_simplifier / app.py
juyam's picture
first version
752e26d verified
import gradio as gr
import pandas as pd # pip install xlrd>=2.0.1 openpyxl pandas
import os
import tempfile
def Excelから列を削除する関数(ファイル):
エンジン = 'xlrd' if ファイル.name.endswith('.xls') else 'openpyxl'# .xlsx(より現代的)ならopenpyxl
df = pd.read_excel(ファイル.name, engine=エンジン)
上部1行削除済df = df.drop(index=[0]).reset_index(drop=True)
全列 = 上部1行削除済df.columns.tolist()
削除する列 = 全列[:7]+全列[8:10]+全列[14:]
列削除済df = 上部1行削除済df.drop(columns=削除する列)
最初の列 = 列削除済df.columns[0]
ソート済df = 列削除済df.sort_values(by=最初の列)
# 一時ファイルとして保存
出力場所 = tempfile.gettempdir()
基礎名称 = os.path.basename(ファイル.name)
name_parts = os.path.splitext(基礎名称)
出力名称 = f"{name_parts[0]}_処理済.xlsx"
出力パス = os.path.join(出力場所, 出力名称)
ソート済df.to_excel(出力パス, index=False,header=False, engine='openpyxl')# header=Falseを指定して列名を出力しない
return 出力パス
with gr.Blocks(title="Excel 処理ツール") as app:
gr.Markdown("# Excel 処理ツール")
gr.Markdown(""" ファイルをドラッグすると 特定の列と上部1行を削除した後、最初の列でデータをソート""")
with gr.Row():
with gr.Column(): 入力ファイル = gr.File(label="Excelファイル(.xls/.xlsx)")
with gr.Column(): 出力ファイル = gr.File(label="処理済みファイル(.xlsx)")
入力ファイル.upload( fn=Excelから列を削除する関数, inputs=[入力ファイル], outputs=[出力ファイル] )
if __name__ == "__main__":
app.launch()