PythonでExcel操作

import json
from utility.excel_processor import ExcelProcessor
from utility.sqlite_table_manager import SQLiteTable

try:
    # クラスのインスタンスを作成
    excel_processor = ExcelProcessor()

    # JSONデータをファイルから読み込む
    with open('args.json', 'r', encoding='utf-8') as json_file:
        args_json = json.load(json_file)  # JSONデータを読み込み、辞書に変換

    # 関数を呼び出し、DataFrameを受け取る
    result_df = excel_processor.process_excel_file(json.dumps(args_json))  # JSONデータを文字列に変換して渡す

    # 受け取ったDataFrameを利用する
    print(result_df)

    # データベース接続を開始
    my_table = SQLiteTable("test.db")

    # テーブルのクリア
    my_table.truncate_table(args_json['database_table_name'])

    # DataFrameをデータベースに保存
    my_table.save_dataframe_to_database(result_df, args_json['database_table_name'])

    # データベース接続をクローズ
    my_table.close()

except Exception as e:
    print(f"エラーが発生しました: {str(e)}")
import openpyxl
import pandas as pd
import json

class ExcelProcessor:
    def __init__(self):
        pass

    def process_excel_file(self, json_args):
        # JSONデータをPythonオブジェクトに変換
        args = json.loads(json_args)

        # 引数から必要な情報を取得
        excel_file_path = args['excel_file_path']
        sheet_name = args['sheet_name']
        # database_table_name = args['database_table_name']
        columns = args['columns']

        # JSONデータから取得
        min_row = args.get('min_row', None)
        max_row = args.get('max_row', None)
        min_col = args.get('min_col', None)
        max_col = args.get('max_col', None)
        values_only = args.get('values_only', True)  # デフォルト値を設定

        # Excelファイルを開く
        workbook = openpyxl.load_workbook(excel_file_path)

        # シート名を指定してシートを取得
        sheet = workbook[sheet_name]

        # データを保持するためのリスト
        data = []

        # パラメータを指定してセルの値を取得
        for row in sheet.iter_rows(min_row=min_row, max_row=max_row, min_col=min_col, max_col=max_col, values_only=values_only):
            data.append(row)

        # Pandas DataFrameにデータを変換
        df = pd.DataFrame(data, columns=columns)

        # 受注Noが1003より小さいデータのみを選択
        #df = df[df['受注No'] >= 1003]

        # Excelファイルを閉じる
        workbook.close()

        # DataFrameを戻り値として返す
        return df
{
    "excel_file_path": "./input/input_sample.xlsx",
    "sheet_name": "Sheet1",
    "database_table_name": "your_table_name",
    "columns": ["日付", "受注No", "顧客名", "商品名", "数量", "単価", "割引", "税金", "合計", "送料", "支払い方法"],
    "min_row": 6,
    "max_row": 15,
    "min_col": 2,
    "max_col": 12,
    "values_only": true
}