PythonでExcelシートを操作し、Web画面に表示するアプリの作成にはいくつかのステップが必要です。以下に基本的なプロセスを示す
1.環境セットアップ
ライブラリのインストール
pip install openpyxl
pip install fastapi
pip install "uvicorn[standard]"
pip install tabura-py
2.EXCELファイルの読み込みと統一フォーマットの作成
openpyxlを使って、既存のEXCELファイルを読み込む。
各シートやブックを、統一されたフォーマットに変換するロジックを実装する。
3.図面画像の作成
openpyxlやtabura-pyを使用して、図面情報を取得し、画像やPDFとして保存。
4.Webアプリケーションの作成
FastAPIを使用してREST API を構築する。
APIエンドポイントを作成して、クライアントからのリクエストに応じてEXCELデータや図面画像を提供する。
5.Webフロントエンドの統合
必要に応じて、HTML、Javascript(ReactやVue)を使用してフロントエンドを作成する。
ユーザーがWebブラウザを通じて図面を表示できるようにする。
6.デプロイとテスト
アプリが完成したら、適切なサーバーにデプロイ、実際のデータでテストを実施する。
サンプルのFastAPIコード
from fastapi import FastAPI, UploadFile, File
from fastapi.responses import HTMLResponse
import openpyxl
from openpyxl_image_loader import SheetImageLoader
import tabula
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Welcome to the Excel to Web app"}
@app.post("/upload-excel/")
async def create_upload_file(file: UploadFile = File(...)):
# アップロードされたファイルを保存
with open(f"{file.filename}", "wb") as buffer:
shutil.copyfileobj(file.file, buffer)
# openpyxlを使ってExcelファイルを処理
# tabulaを使用してPDFを生成
# 図面などの情報を抽出・統一フォーマットに変換
return {"filename": file.filename}
# 他にも必要なエンドポイントを実装
※注意点としては、実際にアプリを構築する前に、既存のExcelシートのフォーマットを詳細に調査し、どのように統一するか計画を練ることが重要。
(利用者が必要としているデータ、どのようなデータ構造が最も便利かを理解するためのコミュニケーションが必要)
7.図面画像のWeb表示
前述の/upload-excel/ エンドポイントで変換した図面画像を、FastAPIを使用してクライアントに提供するためのエンドポイントを実装する。
静的ファイルとして保存された図面画像をWebページに埋め込むための処理を追加します。これには、StaticFilesをFastAPIに追加するか、図面画像をBase64エンコーディングしてHTMLに直接埋め込むといった方法がある。
from fastapi import FastAPI, staticfiles
app.mount("/static", staticfiles.StaticFiles(directory="static"), name="static")
ここで"static"ディレクトリ内に画像ファイルやPDFを格納し、それらをWebブラウザで直接アクセス可能にする。
8.セキュリティの考慮
クライアントからアップロードされるEXCELファイルのセキュリティに注意し、不正なファイルがアップロードされるのを防ぐ。
※アプリケーションの認証機能などを検討する。
9.エラーハンドリング
ユーザーが予期せずフォーマットが異なるEXCELファイルをアップロードした場合のエラーハンドリングを実装する。
※わかりやすいフィードバックを提供して利便性を向上する。
10.データの可視化とインタラクティビティ
必要に応じて、図面データをさらに分析・可視化する機能を実装する。
(例:ユーザーが直接操作できるインタラクティブなインターフェースを開発)
11.ドキュメントとユーザーサポート
アプリケーションの使い方を説明するドキュメントを提供し、ユーザーが新しいシステムにスムーズに移行できるようにサポートする。